我有一个包含消息的字符串。字符串如下所示:
bill:hello;tom:hi;bill:how are you?;tommy:hello!; ...
我需要在字符:
和;
上将字符串拆分为多个字符。
现在,我已将字符串拆分为;
,我可以将结果添加到列表元素中。
List<Message> listMessages = new ArrayList<Message>();
StringTokenizer tokenizer = new StringTokenizer(messages, ";");
String result = null;
String uname = "";
String umess = "";
while (tokenizer.hasMoreTokens()) {
result = tokenizer.nextToken();
listMessages.add(new Message(result, ""));
}
我仍然必须在:
上执行此操作,以便在我的list元素中包含两个结果字符串,并尝试了类似的内容:
List<Message> listMessages = new ArrayList<Message>();
StringTokenizer tokenizer = new StringTokenizer(messages, ";");
String result = null;
String uname = "";
String umess = "";
while (tokenizer.hasMoreTokens()) {
result = tokenizer.nextToken().split(":");
uname = result[0];
umess = result[1];
listMessages.add(new Message(result[0], result[1]));
}
但我得到了这个错误,我不明白?
01-23 17:12:19.168: E/AndroidRuntime(711): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appandroid/com.example.appandroid.ListActivity}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
提前感谢您查看我的问题。
答案 0 :(得分:4)
您可以使用String.split(regex)
根据以下两个分隔符进行拆分,而不是使用StringTokenizer:
String test="this: bill:hello;tom:hi;bill:how are you?;tommy:hello!;";
String[] arr = test.split("[:;]");
for(String s: arr){
System.out.println(s);
}
输出:
this
bill
hello
tom
hi
bill
how are you?
tommy
hello!
编辑:
来自@ njzk2评论如果您只是想使用StringTokenizer,您可以使用其overloaded constructor中的一个,它需要2个参数。
StringTokenizer str = new StringTokenizer(test, ":;");