2017-07-01 119 views
-1

我正要写一个方法,它必须决定在比较两个字符串时是否忽略大小写。组合StringComparison枚举

public bool IsCaseSensitiveUsing(StringComparison comparer) 
{ 
    if (comparer == StringComparison.CurrentCulture | 
     comparer == StringComparison.InvariantCulture | 
     comparer == StringComparison.Ordinal)) 
      return true; 

    return false; 

} 

有没有更好的方法来做到这一点?

+0

怎么样只是'StringComparison .OrdinalIgnoreCase'? – Rahul

+0

该方法不会反映真实参数。 'OrdinalIgnoreCase'和'CurrentCultureIgnoreCase'和'InvariantCulture.IgnoreCase'是一样的吗? – Mhd

+1

定义“更好”?你可以做'return(int)comparer%2!= 0'或'return!comparer.ToString()。EndsWith(“IgnoreCase”)',它更短,但我不会说更好 –

回答

0

我建议implementng 扩展方法

public static class StringComparisonExtensions { 
    public static bool IsCaseSensitiveUsing(this StringComparison value) { 
     return (value == StringComparison.CurrentCulture || 
       value == StringComparison.InvariantCulture || 
       value == StringComparison.Ordinal); 
    } 
    } 

    .... 

    StringComparison myComparison = ... 

    // Check as if StringComparison has IsCaseSensitiveUsing method: 
    if (myComparison.IsCaseSensitiveUsing()) { 
    ... 
    } 
0

你可以让一组需要区分大小写StringComparison值,并在你的方法使用它:

private static readonly ISet<StringComparison> caseSensitive = new HashSet<StringComparison> { 
    StringComparison.CurrentCulture 
, StringComparison.InvariantCulture 
, StringComparison.Ordinal 
}; 
public static bool IsCaseSensitiveUsing(StringComparison comparer) { 
    return caseSensitive.Contains(comparer); 
}