1

今、私は少し混乱しています。この文字列をトークナイザーで操作したい:

Bob:23456:12345 Carl:09876:54321

ただし、Tokenizerを使用していますが、試してみると次のようになります。

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

私は得る:

12345カール

ただし、最初のintと2番目のintを変数に入れたいと思います。

何か案は?

4

4 に答える 4

2

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

複数のパターンがあるため、1つのトークナイザーだけでそれらを処理することはできません。

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

トークナイザーを使用する必要がある場合は、2回使用する必要があります

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

個人的には、ここではトークナイザーを使用せず、文字列を分割するクラウディオの答えを使用します。

于 2013-01-09T12:49:09.810 に答える