如何仅检查两个字符串的大小写差异?

How to check two strings for difference in casing only?

可能有以下几对字符串。现在我的目标是只检测第一个例子中的大小写差异:

  1. "abC","abc"
  2. "abc","abc"
  3. „abDef","abc"

我的方法是首先在 C# 中将字符串与 ignorecase = true 进行比较:

String.Compare(string1, string2, true) returns 0 表示 1.+2。和 returns 1 代表 3. 可能性

所以检查结果为 0 我可以将我的结果缩小到两种可能性,我现在用 ignorecase = false:

String.Compare(string1, string2, false)

所以现在检查 0 会给我正确的结果。有没有更好的解决方案可以在一个比较步骤中实现这一目标?

String.Compare 的存在是为了涵盖您建议的相反场景,但在排序场景的上下文中,您可以使用 == 0 或不等式 !=0[=16 来实现相等性=]

String.Equals 执行与 String.Compare 相同的评估逻辑,但专门针对相等情况。

你检测 in-equality only based on casing 的问题意味着你将不得不在两次检查中完成,否则字符串根本不相等会 return 错误的否定响应。

想到以下选项:

public static bool IsSimilarButDifferentCase(string input1, string input2)
{
    // satisfy the first criteria
    if (input1.Equals(intput2, StringComparison.InvariantCultureIgnoreCase))
    {
        // check that it is now NOT the same
        return !input1.Equals(intput2, StringComparison.InvariantCulture)
    }
    return false;
}

您还可以通过转换为小写(或大写)并直接使用比较运算符来执行以下内联操作:

input1.ToLower() == input2.ToLower() && input1 != input2

根据您的业务需求,请随意向我们提供不同的文化超载或上述所有内容的变体。