есть строка на русском языке с целыми числами. codepage=windows-1251 или СР1251 если быть точнее
есть програмный код на яве(привожу ниже)
результат: некоректное(на мой взгляд) отображение выделеных посимвольно символов(смотрел в консольном окне в IDE).
код взят из моего jar-приложения написаного на NetBeans 5.5.1
задача: отделить целые числа от строки методом посимвольного определения принадлежности к разряду чисел.
з.ы. может есть какой альтернативный метод да я не нашел его???
public void str2int_mas(String s){
/**переходим на битовую обработку
*/
try {
System.out.println("Вхожу в начало цикла...");
byte buf2[] = s.getBytes("CP1251");//перевожу в битовый массив потому что по другому незнаю как дальше обработать
String S = new String();
int y,i=0;
byte i1=124,i2;
java.util.Stack<Byte> st = new java.util.Stack<Byte>();
System.out.println("---------------------"+buf2.length);
while(i<buf2.length){
y = i;
while(java.lang.Character.isDigit((char)buf2[y])){
st.push(buf2[y]);//вносим все нужные нам битовые значения цифер
//S=S.concat(java.lang.Byte.toString(buf2[y]));
System.out.println(y + " - " + (char)buf2[y]);
y++;
}
if(i!=y) {
st.push(i1);
//S=S.concat("|");
i = y;
}
i++;
System.out.println("Контрольная точка - ["+i+"]='"+buf2[i]+"' ch='"+(char)buf2[i]+"'");
}
System.out.println("Досюдова дошел???");
while (st.empty()==false){
i2 = st.pop();
System.out.print((char)i2);
}
System.out.println("\n-------------------");
msg3 = S;
System.out.println(msg3);
/*теперь в строковом массиве подряд через "|" номера нужных нам цифер.*/
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
System.out.println("Варнинг!!! - "+ex.getMessage());
}
}
Здравствуйте, progma137, Вы писали:
P> byte buf2[] = s.getBytes("CP1251");//перевожу в битовый массив потому что по другому незнаю как дальше обработать
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#charAt(int)
или java.util.regex
ммм сначала не понял как его применить, но потом понял.
скажите, а "выуженые" таким образом символы из строки сохраняют кодировку?
Здравствуйте, progma137, Вы писали:
P>ммм сначала не понял как его применить, но потом понял.
P>скажите, а "выуженые" таким образом символы из строки сохраняют кодировку?
Коллега, почитайте про
String, будет легШе на душе.
Все хранится в UTF-16.
Из String-а можете перевести в байты в любимую кодировку, ну и String создать по байтам с указанием кодировки.
Предупреждая Ваш вопрос — на вход в метод str2int_mas(String s), кстати, славное французко-нижегородское название, так вот, на входе строка тоже в UTF-16. Так что применением regexp-a Вы ничего не испортите. Взгляните еще в сторону
java.util.Scannerеще о Scanner, вдруг понравится больше.