==
使用“ ”运算符和string.Equals()
比较字符串的方法是否存在任何全球化问题?如果是的话,避免这种情况的解决方案是什么?
问问题
156 次
2 回答
5
With String.Equals
, 你可以使用StringComparison.InvariantCultureIgnoreCase
or StringComparison.InvariantCulture
, With==
你不能那样做。
您应该看到:土耳其 İ 问题以及您应该关心的原因
来自同一篇文章的代码片段:
using System;
using System.Globalization;
using System.Threading;
internal class Program
{
private static void Main(string[] args)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
const string input = "interesting";
bool comparison = input.ToUpper() == "INTERESTING";
Console.WriteLine("These things are equal: " + comparison);
Console.ReadLine();
}
}
以上将使用运算符返回 afalse
进行相等比较==
您可以在上面的代码中尝试以下行
bool Comparison2 = input.Equals("INTERESTING",
StringComparison.InvariantCultureIgnoreCase);
结果将是true
于 2012-11-07T06:13:54.053 回答
2
==
运算符和.Equals(string)
and重载都.Equals(object)
使用序号字符串比较,并且它与区域性无关。
这与.CompareTo
文化依赖不同。
于 2012-11-07T06:13:05.427 回答