我有一个包含消息的字符串。该字符串如下所示:
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<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
提前感谢您查看我的问题。
最佳答案
您可以使用 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, ":;");
关于java - Android:考虑2个分隔字符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14485468/