【发布时间】:2012-05-24 01:09:06
【问题描述】:
我有以下字符串:A:B:1111;domain:80;a;bA 是可选的,因此 B:1111;domain:80;a;b 也是有效输入。:80 也是可选的,因此 B:1111;domain;a;b 或 :1111;domain;a;b 也是有效输入
我想要的是最终得到一个String[],它有:
s[0] = "A";
s[1] = "B";
s[2] = "1111";
s[3] = "domain:80"
s[4] = "a"
s[5] = "b"
我是这样做的:
List<String> tokens = new ArrayList<String>();
String[] values = s.split(";");
String[] actions = values[0].split(":");
for(String a:actions){
tokens.add(a);
}
//Start from 1 to skip A:B:1111
for(int i = 1; i < values.length; i++){
tokens.add(values[i]);
}
String[] finalResult = tokens.toArray();
我想知道有没有更好的方法来做到这一点?我还能如何更有效地做到这一点?
【问题讨论】:
-
您是否尝试过:s.split("[;:]") 此正则表达式拆分为 ';' 的字符或“:”
-
域名后面总是跟
80吗? -
@codaddict:不,这也是可选的
-
另一种方法是使用正则表达式,但我非常怀疑您是否可以做任何比您上面所做的更有效的事情。
标签: java regex string optimization