Java Android:拆分一个字符串,考虑两个分隔字符
我有一个包含消息的字符串。字符串如下所示:Java Android:拆分一个字符串,考虑两个分隔字符,java,android,tokenize,Java,Android,Tokenize,我有一个包含消息的字符串。字符串如下所示: bill:hello;tom:hi;bill:how are you?;tommy:hello!; ... 我需要将字符串拆分为几个字符,分别是:和 现在,我已经在上拆分了字符串并且我可以将结果添加到列表元素中 List<Message> listMessages = new ArrayList<Message>(); StringTokenizer tokenizer = new StringTokeniz
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, ""));
}
但我犯了一个错误,我不明白?
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,您可以使用一个包含2个参数的its
StringTokenizer str = new StringTokenizer(test, ":;");
您可以使用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,您可以使用一个包含2个参数的its
StringTokenizer str = new StringTokenizer(test, ":;");
要在开始时还是在添加到列表后拆分字符串?请阅读darn文档。这就像您正在使用的标记器的javadoc的第一行…@njzk2我不明白?我试图从OP那里得到需求,以便能提供正确的答案?@smit:after。每个列表元素都有一个用户名X和一条消息Y。(X:Y;)。@smit:未定向给您,抱歉误解。我只是想说op正在使用一个函数,而没有读取文档,也没有抱怨如何做一些事情。方法文档在第一行中的状态是…你想在开始时分割字符串还是在添加到列表后分割字符串?阅读该死的文档。这就像您正在使用的标记器的javadoc的第一行…@njzk2我不明白?我试图从OP那里得到需求,以便能提供正确的答案?@smit:after。每个列表元素都有一个用户名X和一条消息Y。(X:Y;)。@smit:未定向给您,抱歉误解。我只是想说op正在使用一个函数,而没有读取文档,也没有抱怨如何做一些事情,方法文档的状态在第一行…所以在[:;]中,我们不需要像[:|]这样的OR运算符吗?为什么这么复杂?strintokenizer就是这么做的,只需要使用它properly@njzk2kewl,我不太了解StringTokenizer,也听人说使用String.split()更灵活。。无论如何,谢谢:)@njzk2直接来自StringTokenizer的API,它将字符串分解为令牌;新代码可能应该使用拆分(字符串)。
link-->@Dennis。不,你不需要那个。这就是性格课的全部要点[;:]
已经意味着(:)
,然而,[:;]
将意味着(::[;])
所以在[:]中我们不需要像[:;]这样的OR操作符吗?为什么这么复杂?strintokenizer就是这么做的,只需要使用它properly@njzk2kewl,我不太了解StringTokenizer,也听人说使用String.split()更灵活。。无论如何,谢谢:)@njzk2直接来自StringTokenizer的API,它将字符串分解为令牌;新代码可能应该使用拆分(字符串)。
link-->@Dennis。不,你不需要那个。这就是性格课的全部要点[;:]
已经表示(:|)
,而[:|]
将表示(:|[|]|)