【问题标题】:Comparing 2 strings with null, empty and whitespace values将 2 个字符串与空值、空值和空白值进行比较
【发布时间】:2018-10-25 17:10:21
【问题描述】:

我可以解释这个问题的最好方法是使用 2 数据库。第一个数据库保存所有实时数据。第二个数据库保存我们定期更新的数据。我需要确定是否需要在第二个数据库中更新值。让我们说一个名为 Occupation 的领域。举几个场景:

DB1 的值为 null,DB 2 的值为 null,没有更新。
DB1 有空值,DB2 有空值,没有更新。
DB1 有空值,DB2 有空值,没有更新。
DB1 有空值,DB2 有空值,没有更新。
DB1 有值,DB2 有空,null 或任何其他值,更新。
DB1 有一个 null、空、空格,DB2 有一个实际值 update。

为了实现,我写了一个这样的方法:

if (string.IsNullOrWhiteSpace(db1.Occupation)) db1.Occupation = string.Empty;
if (string.IsNullOrWhiteSpace(db2.Occupation)) db2.Occupation = string.Empty;
if (!db1.Occupation.Equals(db2.Occupation)) return false;
return true;

我的问题是是否有内置的方法来实现我上面的场景?我正在研究if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)object.Equals(str1, str2) 但我不认为这些处理上述情况是因为空格和空字符串在我看来是两个不同的值。也许我错了,这就是这篇文章要找出是否有更好的方法。

【问题讨论】:

    标签: c# string string-comparison


    【解决方案1】:

    这会满足你的需要吗?

    return ((db1.Occupation?.Trim() + "") == (db2.Occupation?.Trim() + ""));
    
    • ? 保护空引用异常
    • .Trim() 清理白色 空间
    • + "" 将任何 null 转换为空

    【讨论】:

    • 你忘了他们之间的==吗?
    • 比我快几秒!虽然我的只是略有不同:return ((first?.Trim() ?? "") == (second?.Trim() ?? ""))
    • @RufusL 那也不错。
    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2013-09-07
    • 2020-11-15
    相关资源
    最近更新 更多