比较C#中的日文字符

Add*_*ddy 4 c# string

我正在检查日语字符串的空格并用"_"替换它们.这就是我在做的事情:

string input1="abc  dfg";
string input2="????";
if(input1.Contains(" "))
{
  Console.WriteLine(input1.Replace(" ","_"));
}
Console.WriteLine("------------------");
if(input2.Contains(" "))
{
  Console.WriteLine(input2.Replace(" ","_"));
}
Run Code Online (Sandbox Code Playgroud)

这是此代码的输出

abc__dfg
------------------
Run Code Online (Sandbox Code Playgroud)

它在简单的英文字符串中用"_"替换空格,但在日语字符串中则不是.

Kie*_*Chu 9

因为你的外观空间input2不是真正的空间,只需检查它的ascii代码

Console.WriteLine(Convert.ToInt32('?')); // output: 12288
Console.WriteLine(Convert.ToInt32(' ')); // output: 32

string input1 = "abc  dfg";
string input2 = "????"; // a space
string input3 = "?? ?"; // not a space
if (input1.Contains(" "))
{
    Console.WriteLine(input1.Replace(" ", "_"));
}
Console.WriteLine("------------------");
if (input2.Contains("?"))
{
    Console.WriteLine(input2.Replace("?", "_"));
}
Console.WriteLine("------------------");
if (input3.Contains(" "))
{
    Console.WriteLine(input3.Replace(" ", "_"));
}
Run Code Online (Sandbox Code Playgroud)

@Ronan Thibaudau的原始解释:

因为它不是空格,所以它不是同一个字符,从输入2字符串复制你所谓的"空格"并将其粘贴到input2.replace方法中它会起作用,它与你键入的空格不同(即使我尝试在stackoverflow上选择它,它的大小是input1中的空格的两倍,因此它不能是相同的字符)

  • "Ronan Thibaudau"在评论中有一个明确的解释让他给出答案.或者在你的回答中提及他.我认为这可能更明显. (2认同)