C# 通过忽略编码进行字符串比较
我有两条线C# 通过忽略编码进行字符串比较,c#,string,character-encoding,C#,String,Character Encoding,我有两条线 string one = "Montr�al"; string two = "Montréal"; 需要进行什么样的字符串比较,或者在这两个字符串之间进行字符串比较以使它们彼此相等。我累了 if(one.equals(two)){ //true } 也累了 if(String.equals(one,two, StringComparison.InvariantCultureIgnoreCase)){ //true } 甚至厌倦了字符串。比较方法,它们似乎都失败了。如何使这两个
string one = "Montr�al";
string two = "Montréal";
需要进行什么样的字符串比较,或者在这两个字符串之间进行字符串比较以使它们彼此相等。我累了
if(one.equals(two)){
//true
}
也累了
if(String.equals(one,two, StringComparison.InvariantCultureIgnoreCase)){
//true
}
甚至厌倦了
字符串。比较方法,它们似乎都失败了。如何使这两个字符串彼此相等。首先将它们转换为相同的编码。如果字符串2
为utf,则尝试
string one = Encoding.UTF8.GetString(Encoding.ASCII.GetBytes("Montr�al"));
然而,“Montr�al“
必须直接从源代码中读取,而不是在代码编辑器中编写。类程序
class Program
{
static void Main(string[] args)
{
string one = "Montr�al";
string two = "Montréal";
one = Translate(one);
two = Translate(two);
if (string.Equals(one, two, StringComparison.InvariantCultureIgnoreCase))
{
Console.WriteLine("Equal");
}
Console.ReadLine();
}
static string Translate(string input)
{
var output = new char[input.Length];
for (int i = 0; i < input.Length; i++)
{
var charCode = (int) input[i];
if (charCode == 65533) // char �
output[i] = (char)233; // é
else
output[i] = input[i];
}
return new string(output);
}
}
{
静态void Main(字符串[]参数)
{
string one=“Montr�al”;
字符串2=“Montréal”;
一=翻译(一);
二=翻译(二);
if(string.Equals(一,二,StringComparison.InvariantCultureIgnoreCase))
{
控制台。写入线(“相等”);
}
Console.ReadLine();
}
静态字符串转换(字符串输入)
{
var输出=新字符[input.Length];
for(int i=0;i
如果除了é
之外,其他字母丢失了怎么办?