这很奇怪,因为我已经使用了Replace功能数千次.这是我的代码:
while (d.IndexOf("--") != -1) d=d.Replace("--", "-");
Run Code Online (Sandbox Code Playgroud)
这是我跟踪时变量d的值:
"?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???"
Run Code Online (Sandbox Code Playgroud)
但是当d的值是:
"?????,??? ????,girl name,??????-?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???"
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?有趣的是,甚至破折号都是以编程方式添加的.
bas*_*rat 19
那是因为:
var d1 = "?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
Run Code Online (Sandbox Code Playgroud)
与此不一样:
var d2 = "?????,??? ????,girl name,??????---???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
Run Code Online (Sandbox Code Playgroud)
字符串中的最后三个字符实际上并不是unicode -自己动手:
var d1 = "?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
var d2 = "?????,??? ????,girl name,??????---???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
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
Run Code Online (Sandbox Code Playgroud)
仅供参考:字符串比较方法indexof是特定于文化的.我会用:
var d = "?????,??? ????,girl name,??????--?-???-??-???-???-?-????-??-???-?????-????-??????-???-??-???";
while (d.IndexOf("--", System.StringComparison.Ordinal) != -1)
d = d.Replace("--", "-");
Run Code Online (Sandbox Code Playgroud)
因为它使用序数规则,即文化独立的unicode值,并且运行得更快.
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |