I have prepared a simple code snippet in order to separate the erroneous portion from my web application.
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");
}
}
}
I have tested it while building a web application JSF. I just want to know why in the above code temp.split(".")
does not work. The statement,
System.out.println(words[i]+"\n");
displays nothing on the console means that it doesn't go through the loop. When I change the argument of the temp.split()
method to other characters, It works just fine as usual. What might be the problem?
\\.
is the simple answer. Here is simple code for your help.
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];
}
}
private String temp = "mahesh.hiren.darshan";
String s_temp[] = temp.split("[.]");
Log.e("1", ""+s_temp[0]);
Try:
String words[]=temp.split("\\.");
The method is:
String[] split(String regex)
"." is a reserved char in regex
The documentation on split()
says:
Splits this string around matches of the given regular expression.
(Emphasis mine.)
A dot is a special character in regular expression syntax. Use Pattern.quote()
on the parameter to split() if you want the split to be on a literal string pattern:
String[] words = temp.split(Pattern.quote("."));
The method takes a regular expression, not a string, and the dot has a special meaning in regular expressions. Escape it like so split("\\.")
. You need a double backslash, the second one escapes the first.
It works fine. Did you read the documentation? The string is converted to a regular expression.
.
is the special character matching all input characters.
As with any regular expression special character, you escape with a \
. You need an additional \
for the Java string escape.
Source: Stackoverflow.com