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

标签 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<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/

相关文章:

java - 如何使 libGDX 桌面应用程序可调整大小?

java - 尝试在 Tomcat 服务器上运行 Web 应用程序但无法运行

Elasticsearch:使用关键字标记器但不使用停用词对字段进行索引

android - 在 skobbler 3.0 中如何在 map 上的注释中设置自定义图像

regex - 使用正则表达式为词法分析器标记字符串是否是个坏主意?

python - 如何计算标记化列表中的中文词频?

java - "Multiple markers at this line"

java - 数组值存入数据库postgresql

java - Kotlin 中的 RxTextView 无法从 KFunction1 中提取字符串

android - 如何在android中的多个编辑文本上添加Text Watcher?