混淆了.split()在Java中的工作方式
我从一个文本文件中获取了这个字符串混淆了.split()在Java中的工作方式,java,regex,string,split,Java,Regex,String,Split,我从一个文本文件中获取了这个字符串 "1 normal 1 [(o, 21) (o, 17) (t, 3)]" 我想在字符串数组中接受1,normal,1,o,21,17,t,3 Scanner inFile = new Scanner(new File("input.txt"); String input = inFile.nextLine(); String[] tokens = input.split(" |\\(|\\)|\\[\\(|\\, |\\]| \\("); fo
"1 normal 1 [(o, 21) (o, 17) (t, 3)]"
我想在字符串数组中接受1,normal,1,o,21,17,t,3
Scanner inFile = new Scanner(new File("input.txt");
String input = inFile.nextLine();
String[] tokens = input.split(" |\\(|\\)|\\[\\(|\\, |\\]| \\(");
for(int i =0 ; i<tokens.length; ++i)
{
System.out.println(tokens[i]);
}
为什么阵列中存储空间。例如:
1 [(o
[(
因此,在这两个匹配之间,将返回一个空字符串“”。这不是空格,而是空字符串。您的字符串是:
"1 normal 1 [(o, 21) (o, 17) (t, 3)]"
它根据您的regexp按以下方式拆分:
Token = "1"
Delimiter = " "
Token = "normal"
Delimiter = " "
Token = "1"
Delimiter = " "
Token = "" <-- empty string
Delimiter = "[("
Token = "o"
... end so on
因此,任何数量的“()[,]”
相邻字符都将被视为分隔符
Token = "1"
Delimiter = " "
Token = "normal"
Delimiter = " "
Token = "1"
Delimiter = " "
Token = "" <-- empty string
Delimiter = "[("
Token = "o"
... end so on
"[ \\(\\)\\[\\,\\]]+"