我正在检查日语字符串中的空格并用“_”替换它们。 这就是我在做的事情:
string input1="abc dfg";
string input2="尾え れ";
if(input1.Contains(" "))
{
Console.WriteLine(input1.Replace(" ","_"));
}
Console.WriteLine("------------------");
if(input2.Contains(" "))
{
Console.WriteLine(input2.Replace(" ","_"));
}
以下是此代码的输出
abc__dfg
------------------
它在简单的英文字符串中用“_”替换空格,但在日语字符串中却没有。
答案 0 :(得分: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(" ", "_"));
}
@Ronan Thibaudau 的原始解释:
因为它不是一个空格,它不是同一个角色,复制你 从输入2字符串调用“空格”并将其粘贴到 input2.replace方法,它会工作,它只是不一样 字符作为您键入的空格(即使我尝试在此处选择它) stackoverflow它是input1中空格的两倍,所以它 不能是同一个字符)
答案 1 :(得分:1)
如果您不想担心使用ASCII代码或复制粘贴字符而不知道如何期待,请执行以下操作:
const char
答案 2 :(得分:0)
很可能您的控制台字体不支持和/或(默认)代码页不支持日文字符。
尝试
Console.WriteLine(Console.OutputEncoding.EncodingName);
Console.WriteLine(Console.OutputEncoding.CodePage);
Console.WriteLine(input2);
Debug.Write(input2);
进行比较。选择支持日文字符的字体和代码页,例如
Console.OutputEncoding = Encoding.UTF8;
要更改控制台的默认代码页,请查看以下答案:Unicode characters in Windows command line - how?
关于字符串本身:
将字符串尾え れ
复制/粘贴到此方:Unicode code converter。 Unicode代码点为U+5C3E U+3048 U+3000 U+308C
U+3000
是Ideographic Space,而不是“普通”空格U+0020
。
答案 3 :(得分:0)
将这段代码用于第二个字符串,它将起作用。经过测试,它返回正确的输出。
if (input2.Contains(string.Empty))
{
string cleanedString = System.Text.RegularExpressions.Regex.Replace(input2, @"\s+", "_");
Console.WriteLine(cleanedString);
}