Ответ 1
java.lang.String.split
расщепляется на регулярные выражения, а .
в регулярном выражении означает "любой символ".
Попробуйте temp.split("\\.")
.
Я подготовил простой фрагмент кода, чтобы отделить ошибочную часть от моего веб-приложения.
public class Main {
public static void main(String[] args) throws IOException {
System.out.print("\nEnter a string:->");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp = br.readLine();
String words[] = temp.split(".");
for (int i = 0; i < words.length; i++) {
System.out.println(words[i] + "\n");
}
}
}
Я тестировал его при создании веб-приложения JSF. Я просто хочу знать, почему в приведенном выше коде temp.split(".")
не работает. Утверждение,
System.out.println(words[i]+"\n");
ничего не отображается на консоли, означает, что он не проходит цикл. Когда я изменяю аргумент метода temp.split()
другим символам, он работает нормально, как обычно. В чем может быть проблема?
java.lang.String.split
расщепляется на регулярные выражения, а .
в регулярном выражении означает "любой символ".
Попробуйте temp.split("\\.")
.
Документация на split()
говорит:
Разделяет эту строку вокруг совпадений заданного регулярного выражения.
(Подчеркните мой.)
Точка - это специальный символ в синтаксисе регулярных выражений. Используйте Pattern.quote()
для параметра split(), если вы хотите, чтобы раскол был на литерном строчном шаблоне:
String[] words = temp.split(Pattern.quote("."));
Метод принимает регулярное выражение, а не строку, а точка имеет особое значение в регулярных выражениях. Выбери его так split("\\.")
. Вам нужна двойная обратная косая черта, вторая - первая.
Try:
String words[]=temp.split("\\.");
Метод:
String[] split(String regex)
"" является зарезервированным char в regex
\\.
- простой ответ. Вот простой код для вашей помощи.
while (line != null) {
//
String[] words = line.split("\\.");
wr = "";
mean = "";
if (words.length > 2) {
wr = words[0] + words[1];
mean = words[2];
} else {
wr = words[0];
mean = words[1];
}
}
Он отлично работает. Вы читали документацию? Строка преобразуется в регулярное выражение.
.
- это специальный символ, соответствующий всем входным символам.
Как и в любом регулярном выражении специального символа, вы бежите с помощью \
. Вам понадобится дополнительный \
для escape-последовательности Java.
private String temp = "mahesh.hiren.darshan";
String s_temp[] = temp.split("[.]");
Log.e("1", ""+s_temp[0]);