加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – String.Replace不能正常工作

发布时间:2020-12-15 17:40:18 所属栏目:百科 来源:网络整理
导读:这是非常奇怪的,因为我使用Replace功能数千次.这是我的代码: while (d.IndexOf("--") != -1) d=d.Replace("--","-"); 当我跟踪时,这是变量值: "?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???" 但是当d的
这是非常奇怪的,因为我使用Replace功能数千次.这是我的代码:
while (d.IndexOf("--") != -1) d=d.Replace("--","-");

当我跟踪时,这是变量值:

"?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???"

但是当d的值为:

"?????,??????-?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???"

有人可以告诉我为什么吗
有趣的是,即使是破折号也是以编程方式添加的.

解决方法

那是因为这个:
var d1 = "?????,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";

是不一样的:

var d2 = "?????,??????---???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";

你的字符串中的最后三个字符实际上不是unicode – 自己尝试一下:

var d1 = "?????,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
var d2 = "?????,??????---???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
while (d.IndexOf("--",StringComparison.Ordinal) != -1) d1 = d1.Replace("--","-");
Console.WriteLine(d1); // the last characters are left 
while (d2.IndexOf("--",StringComparison.Ordinal) != -1) d2 = d2.Replace("--","-");
Console.WriteLine(d2); // All clear

只是FYI:
字符串比较法指标是文化特定的.我会用:

var d = "?????,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
while (d.IndexOf("--",System.StringComparison.Ordinal) != -1) 
      d = d.Replace("--","-");

因为它使用了顺序规则,即文化独立的unicode值,并且运行速度更快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读