这是非常奇怪的,因为我使用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值,并且运行速度更快.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。