我从文本文件中获取了这个字符串。
"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
normal
1
o
21
o
17
t
3
为什么数组中存储了空格。
答案 0 :(得分:6)
那不是空格,那是空字符串。你的字符串是:
words=( $sentence )
echo ${#words[@]}
根据你的正则表达式,它按照以下方式分开:
"1 normal 1 [(o, 21) (o, 17) (t, 3)]"
当出现两个相邻的分隔符时,认为它们之间存在空字符串标记。
要解决此问题,您可以更改正则表达式,例如,如下所示:
Token = "1"
Delimiter = " "
Token = "normal"
Delimiter = " "
Token = "1"
Delimiter = " "
Token = "" <-- empty string
Delimiter = "[("
Token = "o"
... end so on
因此,任何数量的"[ \\(\\)\\[\\,\\]]+"
个相邻字符都将被视为分隔符。
答案 1 :(得分:0)
例如:
1 [(o
[(
因此,在这两个匹配之间,返回一个void String“”。