公布微软.net StringBuilder方法一个极其SB的BUG,恼火之极!!

bbwolfcool 2009-12-09 06:34:07
我要做一个应用程序,对一个篇幅较大的众多字符串进行替换操作

例如,每行100个数字0-9,10000行,可以有相同值的行,绝大多不相同

我起先用 string=string.replace("old","new") 去进行操作,old是旧参数,new是新参数

比如需要修改替换第 31行 50行 1020行.。。。。这些数据,那就需要把这些做成数组对吧

我这么做 string s[,]=new string[n,2];
反正就是循环查找替换 s 保存了旧值和新值



替换的是一塌糊涂,替换的结果 20%-30%被替换,其他仍旧不动,我想了一下,可能是 string 太大,

string 这种替换,每次产生一个新对象,可能吃不消,对象太多。


于是我改用了 stringbuilder.Replace("","")方法
比如有一行 2114124123123129313112 我随便写的数字,我要替换为 00000001010023123129313102
大家注意,前面好多都换了,倒数第2个也换了
SB的微软,竟然替换结果是00000001010023123129313112

开始以为循环速度快,CPU出错,我单步调试好多次,都这个鬼样!!!

他为了提高Replace效率肯定是抽样对比,NND,抽样你找到样本,你全换啊,他不,就像一个粗心的人,看前面不一样,认真换,后面差不多,就全搞上去!!

让我花了1周时间去找问题根源!!

大家可以做个实例模拟出效果,你说气人不?
字符串操作是程序的根本操作,抽样对比,也不能这么整啊,出了问题我都是习惯性找自己原因,害我熬多少夜去琢磨


会IL的朋友,帮忙分析一下IL代码,从汇编角度找到根源

越用.net越觉得,就是糊弄人的产品,.net就是噱头,看java搞的火,自己整一套
越往深处用,越不顺手,问题越多,缺陷越多,还到处搞,和这个合作和那个合作,各大厂商还群起响应,AutoCAD,delphi还都从深层次支持,还有公司用它开发网游,不知道怎么开发出来的下去!!!

我用的 3.5 vs2008,都 从1.0更新到 3.5 这种问题还没更新出来?


难道真的只能拿他当花瓶用,开发开发小网站?
...全文
851 82 打赏 收藏 转发到动态 举报
写回复
用AI写文章
82 条回复
切换为时间正序
请发表友善的回复…
发表回复
ourola 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 75 楼 linjf520 的回复:]
引用 44 楼 yixianggao 的回复:
标题党!

有胆贴源码看看!


你可别把我笑死了哈。。。

哈哈哈哈。。。新名词:标题党。
[/Quote]
早就有的词了
  • 打赏
  • 举报
回复
Relace不可能是抽样的
你以为搞民意调查啊
xhlnb 2009-12-12
  • 打赏
  • 举报
回复
还是自个在思想方法上着手吧.
wangxianshou 2009-12-12
  • 打赏
  • 举报
回复
我用微软的东西,比如c# sql 也出过一些莫名其妙的错误
sxmonsy 2009-12-12
  • 打赏
  • 举报
回复
我来围观一下楼主的BUG。
sito_hongta 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sandy945 的回复:]
引用 19 楼 viena 的回复:
不明真相群众来围观下~


一小撮不明真相群众来围观~
[/Quote]

同上
gbb21 2009-12-12
  • 打赏
  • 举报
回复
还没结帖,继续追踪……
Jave.Lin 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 yixianggao 的回复:]
标题党!

有胆贴源码看看!
[/Quote]

你可别把我笑死了哈。。。

哈哈哈哈。。。新名词:标题党。
tianliang1 2009-12-11
  • 打赏
  • 举报
回复
来看哈
gbb21 2009-12-11
  • 打赏
  • 举报
回复
追踪此帖~
liubaoen 2009-12-11
  • 打赏
  • 举报
回复
语言本没有错, 有错的都是人自己的思想。
好好看看的算法有没有问题,我觉得,对于字符串的处理,你最好还是使用正则表达式。
gbb21 2009-12-11
  • 打赏
  • 举报
回复
关键是LZ消失了……
dylike 2009-12-11
  • 打赏
  • 举报
回复
免费用别人的东西不要乱叫,有本事自己做一个.
hangang7403 2009-12-11
  • 打赏
  • 举报
回复
不能确信,建议楼主再分析一下
wangxiao2008 2009-12-11
  • 打赏
  • 举报
回复
感觉不太可能,有空试试
liherun 2009-12-11
  • 打赏
  • 举报
回复
赶紧结贴吧
gbb21 2009-12-11
  • 打赏
  • 举报
回复
hahahahahahaha
viena 2009-12-09
  • 打赏
  • 举报
回复
多匹配替换不应该分多步来完成吧
可以用正则表达式的替换,需替换的关键字用|串起来
用传入一个委托的那个重载,可一次性替换~
PandaIT 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sandy945 的回复:]
引用 19 楼 viena 的回复:
不明真相群众来围观下~


一小撮不明真相群众来围观~
[/Quote]
围观!

想看下代码···
gzxlq 2009-12-09
  • 打赏
  • 举报
回复
我以为楼主能让我振奋一下,又失望了

如果这么简单一个问题微软都搞出bug,还能混到现在?

我也怀疑你是不是重复替换了
加载更多回复(61)

110,539

社区成员

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

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

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