Java разделить и заменить строку - PullRequest
1 голос
/ 05 марта 2012

Я получил строковую переменную. Пример строки такой:

abc
12345 cde123
hyz 
8755 3356

и я хочу назначить строку массива, разбивая пробелы, вот так. И я хочу взять только первые 4 значения.

stringArray[0] = abc;
stringArray[1] = 12345;
stringArray[2] = cde123;
stringArray[3] = hyz;

8755 3356 не нужно назначать в этой строке массива.

Однако abc и 12345 отделяются новой строкой, а не пробелами. Поэтому я пытаюсь заменить символ новой строки стать пробелом с моей функцией, которая выглядит следующим образом:

Util.replaceStr(stringX, "\n", " ");

Чтобы назначить разлитую строку в строку массива, я определяю индекс пробела, который равен

int index= sMessage.indexOf(" ");

И поставить его на цикл

stringArray[i] = stringX.substring(0,index);
stringX=stringX.substring(index,stringX.length()-index);
index =stringX.indexOf(" ");

и присвойте ему первые 4 значения. Однако после того, как я заменю символ новой строки на пробел, появятся двойные пробелы, и первые четыре массива будут выглядеть так

stringArray[0] = abc;
stringArray[1] = ;
stringArray[2] = 12345;
stringArray[3] = cde123;

Как я могу назначить строку массива, пропустив значение пробела? В NETBEAN НЕТ РАЗДЕЛЕННОЙ ФУНКЦИИ . Я знаю, что ява получила. =) * * Тысяча двадцать пять

Ответы [ 5 ]

4 голосов
/ 05 марта 2012

РЕДАКТИРОВАТЬ: этот пример должен работать с целью Java 1.1

String text = "String text2 = text.replaceAll(\"[^\\p{Alpha} ]\", \"\");";
StringBuffer sb = new StringBuffer();
for(int i=0;i<text.length();i++) {
    char ch = text.charAt(i);
    if (Character.isLetter(ch) || Character.isWhitespace(ch))
        sb.append(ch);
}
String text2 = sb.toString();
System.out.println(text2);

печатает

String text  textreplaceAllpAlpha

Если вы хотите разделить на пустое пространство, вы можете использовать \s

String text = 
String[] words = text.split("\\s");

Похоже, что у вас есть несколько пробелов (после hyz есть пробел), вы можете использовать + для обозначения одной или нескольких.

String text = "abc\n" +
        "12345 cde123\n" +
        "hyz \n" +
        "8755 3356\n";
String[] words = text.split("\\s+");
System.out.println(Arrays.toString(words));

отпечатков

[abc, 12345, cde123, hyz, 8755, 3356]
1 голос
/ 05 марта 2012

Использование заменяет

После преобразования всех типов пробелов в \n: Вы можете выполнить замену \n\n на \n, пока строка не изменится.Таким образом, вы можете убедиться, что нет двойных пробелов.

Использование регулярного выражения

Вы также можете использовать шаблон короля регулярных выражений, чтобы найти слова.Что-то вроде:

\S+

должно хватить.Вы получаете все непробельные символы.Если вы найдете первые четыре регулярных выражения в строке, у вас будет то, что вам нужно.

1 голос
/ 05 марта 2012

В Java есть библиотечная функция для разделения, поэтому используйте эту функцию для разделения. Вы просто заменяете новую строку пробелом и используете следующую функцию.

String[] stringArray  = stringX.split("\\s");
0 голосов
/ 05 марта 2012

используйте следующий код:

String[] array = yourString.split("\\s");/* s is uncapitalized.*/

\s означает: Символ пробела, сокращение от [\ t \ n \ x0b \ r \ f]

Вы можете увидеть http://www.vogella.de/articles/JavaRegularExpressions/article.html для получения дополнительной информации.

0 голосов
/ 05 марта 2012

Просто разделите вокруг любой группы пробелов (используя «+» в регулярном выражении).Таким образом, вы не закончите группами, образованными пробелами.

String[] words = text.split("\\s+");
...