string.replace函数bug?

时间:2009-10-20 07:37:33

标签: c# string

string s1 = "[quote=useruk1]<p>im useruk1</p>[/quote]<p>hi  im mod1-probe</p>";
string s2 = "hi  im mod1-probe";
string s3 =  "blah blah";
string s4 = s1.Replace(s2, s3);
Console.Write(s4);

似乎无法正常工作。有任何想法吗?如何解决这个问题?

更新:

问题是空间,正常空间ASCII值是32以上字符串ASCII值是160所以我做了

s1 = Regex.Replace(s1, @"\u00A0", " ");

everthing工作得很好!非常感谢你们!

5 个答案:

答案 0 :(得分:3)

当我运行代码时,输​​出为:

[quote=useruk1]<p>im useruk1</p>[/quote]<p>blah blah</p>

这不是你所期望的吗?

编辑:啊啊啊......正如保罗指出的那样,空格与制表会解释它。

答案 1 :(得分:3)

将输出设为 [quote=useruk1]<p>im useruk1</p>[/quote]<p>blah blah</p>

检查s2和s1中“hi im mod1-probe”中 hi im 之间的空格

答案 2 :(得分:3)

确实有效。我确实从你的帖子中复制了这段代码

string s1 = "[quote=useruk1]<p>im useruk1</p>[/quote]<p>hi  im mod1-probe</p>";
string s2 = "hi  im mod1-probe";
string s3 =  "blah blah";
string s4 = s1.Replace( s2, s3 );
Console.Write( s4 );
Console.ReadLine( );

并将其粘贴到一个新项目中。我的结果是:

"[quote=useruk1]<p>im useruk1</p>[/quote]<p>blah blah</p>"

答案 3 :(得分:2)

问题在于空间,

正常空间ASCII值为32且以上字符串ASCII值为160

所以我做了一个

s1 = Regex.Replace(s1,@“\ u00A0”,“”);

everthing工作正常!

非常感谢!

答案 4 :(得分:1)

为了防止任何可能误解“/ p”,我会:

string s1 = @"[quote=useruk1]<p>im useruk1</p>[/quote]<p>hi  im mod1-probe</p>";