![](/img/trans.png)
[英]Splitting a string without using String.split() - and returning delimiters
[英]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.