今、私は少し混乱しています。この文字列をトークナイザーで操作したい:
Bob:23456:12345 Carl:09876:54321
ただし、Tokenizerを使用していますが、試してみると次のようになります。
String signature1 = tok.nextToken(":"); tok.nextToken(" ")
私は得る:
12345カール
ただし、最初のintと2番目のintを変数に入れたいと思います。
何か案は?
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]);
}
次のコードで実行する必要があります。
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();
}
複数のパターンがあるため、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]
トークナイザーを使用する必要がある場合は、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
個人的には、ここではトークナイザーを使用せず、文字列を分割するクラウディオの答えを使用します。