Android:分割字符串,考虑2个分隔字符

时间:2013-01-23 17:14:18

标签: java android tokenize

我有一个包含消息的字符串。字符串如下所示:

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

提前感谢您查看我的问题。

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, ":;");
相关问题