现在我有点困惑。我想用一个标记器来操作这个字符串:
Bob:23456:12345 Carl:09876:54321
但是,我使用了Tokenizer,但是当我尝试时:
String signature1 = tok.nextToken(":"); tok.nextToken(" ")
我明白了:
12345卡尔
但是我希望将第一个int和第二个int放入var。
有什么想法吗?
答案 0 :(得分:2)
你有两种不同的模式,也许你应该处理两种不同的模式。
拳头你应该拆分空格分隔值。仅使用字符串split(" ")
。这将返回String[]
。
然后为每个String
使用标记器。
我相信会有效。
代码:
String input = "Bob:23456:12345 Carl:09876:54321";
String[] words = input.split(" ")
for (String word : words) {
String[] token = each.split(":");
String name = token[0];
int value0 = Integer.parseInt(token[1]);
int value1 = Integer.parseInt(token[2]);
}
答案 1 :(得分:0)
以下代码应该:
String input = "Bob:23456:12345 Carl:09876:54321";
StringTokenizer st = new StringTokenizer(input, ": ");
while(st.hasMoreTokens())
{
String name = st.nextToken();
String val1 = st.nextToken();
String val2 = st.nextToken();
}
答案 2 :(得分:0)
看到你有多个模式,你只能使用一个标记器来处理它们。
您需要先根据whitespace
拆分它,然后根据colon
进行拆分。
这样的事情应该会有所帮助:
String[] s = "Bob:23456:12345 Carl:09876:54321".split(" ");
System.out.println(Arrays.toString(s ));
String[] so = s[0].split(":", 2);
System.out.println(Arrays.toString(so));
你会得到这个:
[Bob:23456:12345, Carl:09876:54321]
[Bob, 23456:12345]
答案 3 :(得分:0)
如果你必须使用tokeniser,那我叮叮你需要使用它两次
String str = "Bob:23456:12345 Carl:09876:54321";
StringTokenizer spaceTokenizer = new StringTokenizer(str, " ");
while (spaceTokenizer.hasMoreTokens()) {
StringTokenizer colonTokenizer = new StringTokenizer(spaceTokenizer.nextToken(), ":");
colonTokenizer.nextToken();//to igore Bob and Carl
while (colonTokenizer.hasMoreTokens()) {
System.out.println(colonTokenizer.nextToken());
}
}
输出
23456
12345
09876
54321
就个人而言,我不会在这里使用tokenizer并使用Claudio的答案来分割字符串。