繁体   English   中英

不使用String.split()拆分StringBuilder值

[英]splitting a StringBuilder value without String.split()

我将处理文本,并一路拆分,它的子字符串位于正则表达式上,例如String.split() 我希望在StringBuilder上进行这些操作以解决速度问题。

据我所知,StringBuilder没有这种方法。 我所能做的就是调用String.split()并将结果转换为StringBuilder []。 但是,这会很慢-String.split ()会实习生成的String []的每个条目。

另外-StringBuilder不会覆盖Object.equals() 当我需要使用StringBuilder作为集合中的类型时,我正在编写一个具有StringBuilder值字段的包装器类,并对该字段的值覆盖equals()使其正确。

这些是到目前为止的2个,我还记得我需要拥有,而且还很短。

我的问是:

我是否在这里缺少任何东西-有没有办法在StringBuilder上获得这些功能而又没有中间的String来减慢它的速度?

如果没有-为什么不呢? 之所以成为StringBuilder的主要原因,是因为执行时间是以内存为代价的-替代了String的高效内存(执行缓慢)(?),而StringBuilder是文本的一种类型。 为什么不直接使用这些-split()呢?

TIA。

StringBuilder也是一个CharSequence。

Pattern pattern = Pattern.compile(",\\s*"); // Best static final.
Matcher m = pattern.matcher(stringBuilder);
int pos0 = 0;
while (m.find()) {
    int pos1 = m.start();
    CharSequence cs = stringBuilder.subSequence(pos0, pos1);
    ...
    pos0 = pos1;
}
CharSequence cs = stringBuilder.subSequence(pos0, stringBuilder.length());
...

当然s是要么为CharSequence或字符串。 字符串可以利用不分配新字符数组的String.substring

正则表达式仍然很慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM