【发布时间】:2015-05-29 20:07:51
【问题描述】:
为了这个问题,假设我有一个String,其中包含值Two;.Three;.Four(等等),但元素由;. 分隔。
现在我知道有多种拆分字符串的方法,例如 split() 和 StringTokenizer(速度更快且效果很好),但我的输入文件大约是 1GB,我正在寻找比StringTokenizer 更有效的东西。
经过一番研究,我发现indexOf 和substring 非常有效,但示例只有单个分隔符或结果仅返回单个单词/元素。
使用indexOf 和substring 的示例代码:
String s = "quick,brown,fox,jumps,over,the,lazy,dog";
int from = s.indexOf(',');
int to = s.indexOf(',', from+1);
String brown = s.substring(from+1, to);
上面的内容适用于打印brown,但我如何使用indexOf 和substring 来分割具有多个分隔符的行并显示如下所有项目。
预期输出
Two
Three
Four
....and so on
【问题讨论】:
-
你想达到什么目的?你做过各种测试用例的测试,看看哪个“高效”吗?
-
还有一个
indexOf重载需要String... -
你的意思是
string.replaceAll(";\\.", "\n");? -
@BuhakeSindi 是的,我已经完成了测试。对于我的机器上使用 StringTokenizer 的示例字符串需要 8.0 us,split() 需要 23 us
-
只是循环,indexOf() 需要一个开始参数,它应该是最后找到的索引。
标签: java string parsing split stringtokenizer