1

现在我有点困惑。我想用分词器操作这个字符串:

Bob:23456:12345 Carl:09876:54321

但是,我使用 Tokenizer,但是当我尝试时:

      String signature1 = tok.nextToken(":");             
      tok.nextToken(" ")

我得到:

12345 卡尔

但是我想将第一个 int 和第二个 int 放入一个 var 中。

有任何想法吗?

4

4 回答 4

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]);    
}
于 2013-01-09T12:44:46.283 回答
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();
}
于 2013-01-09T12:47:56.633 回答
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]
于 2013-01-09T12:48:54.677 回答
0

如果您必须使用标记器,那么我认为您需要使用它两次

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

就个人而言,虽然我不会在这里使用标记器并使用 Claudio 的答案来拆分字符串。

于 2013-01-09T12:49:09.810 回答