关于拆分字符串的效率问题。

faygoo 2002-09-10 04:09:32
String str = "a|b|c|"
拆成一个字符串数组 String[] strArray = {"a", "b", "c"}

我按照基本的方法:
就是做一个循环,
先用str.indexOf()找出“|”位置,
再用str.subString() 取得到相应的字符串。

但是,当str中"|"出现的次数达到20000次以上时,耗时要达到2分钟以上。

请问各位有没有更好的方法去解决这个问题?
我对正则表达式不懂,是不是可以用它来解决?

谢谢
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqchen79 2002-09-11
  • 打赏
  • 举报
回复
>> 当str中"|"出现的次数达到20000次以上时,耗时要达到2分钟以上。
这还是你的程序有问题. :)

如果循环正确的话,整个过程也只是遍历字符串一次,复杂度O(n),怎么回两分钟?
关键是每次IndexOf要从上次的位置开始,而不是从头开始。
IndexOf有一个重载形式,带一个int参数表示起始位置的。
faygoo 2002-09-11
  • 打赏
  • 举报
回复
思归,和 知秋一叶, 佩服佩服。
希望你们能经常上这个论坛来,答疑解惑。
yarshray 2002-09-10
  • 打赏
  • 举报
回复
不愧是思归就是厉害!
tansm 2002-09-10
  • 打赏
  • 举报
回复
Good
saucer 2002-09-10
  • 打赏
  • 举报
回复
String[] list = str.Split(new Char[]{'|'});

or

String[] list = System.Text.RegularExpressions.Regex.Split(str,"|");
faygoo 2002-09-10
  • 打赏
  • 举报
回复
是吗?
谁能告诉如果用正则表达式如何分解?str是一行的,以“|”结尾。
谢谢各位。最好能给出代码。
yarshray 2002-09-10
  • 打赏
  • 举报
回复
用stringBuilder会快一些!

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧