gpt4 book ai didi

c# - 如果我们将 a 与 á 进行比较,我怎样才能得到 true?

转载 作者:太空狗 更新时间:2023-10-29 20:56:06 28 4
gpt4 key购买 nike

我正在研究 string.Normalize() 方法,我认为如果它们使用不同的 unicode,它用于比较字符串相等性。

这是我到目前为止所做的。 string.Equals() 不是我应该在这里使用的吗?

        string stra = "á";
string straNorm = stra.Normalize();
string strFormC = stra.Normalize(NormalizationForm.FormC);
string strFormD = stra.Normalize(NormalizationForm.FormD);
string strFormKC = stra.Normalize(NormalizationForm.FormKC);
string strFormKD = stra.Normalize(NormalizationForm.FormKD);
Console.WriteLine("norm {0}",straNorm);
Console.WriteLine("C {0}", strFormC);
Console.WriteLine("D {0}", strFormD);
Console.WriteLine("KC {0}", strFormKC);
Console.WriteLine("KD {0}", strFormKD);

Console.WriteLine("a".Equals(stra)); //false
Console.WriteLine("a".Equals(straNorm)); //false
Console.WriteLine("a".Equals(stra.Normalize())); //false
Console.WriteLine("a".Equals(strFormC)); //false
Console.WriteLine("a".Equals(strFormKC)); //false
Console.WriteLine("a".Equals(strFormKD)); //false

最佳答案

您可以使用 string.Compare() 设置 CultureInfo.InvariantCultureCompareOptions.IgnoreNonSpace 如下所示,我创建了一个方法调用 CompareStrings(string str1, string str2),它将返回一个 boolean

public bool CompareStrings(string str1, string str2)
{
return string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreNonSpace) == 0;
}

调用比较字符串的方法:

Console.WriteLine(CompareStrings("a", "á"));
Console.WriteLine(CompareStrings("a", "a"));
Console.WriteLine(CompareStrings("a", "b"));

结果:

True
True
False

CompareOptions.IgnoreNonSpace 定义:它“表示字符串比较必须忽略非间距组合字符,例如变音符号。Unicode 标准将组合字符定义为与基本字符组合以产生新字符。非间距组合字符在呈现时不会自行占用间距位置。”

您可以在 docs 上找到有关 CompareOptions 的更多信息

关于c# - 如果我们将 a 与 á 进行比较,我怎样才能得到 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548264/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com