F#不区分大小写的字符串比较

7
有没有比以下代码更简洁的方式在F#中执行不区分大小写的字符串比较?
System.String.Equals("test", "TeSt", System.StringComparison.CurrentCultureIgnoreCase)
4个回答

10

此外,您还可以使用F#类型扩展机制:

> type System.String with
-   member s1.icompare(s2: string) =
-     System.String.Equals(s1, s2, System.StringComparison.CurrentCultureIgnoreCase);;
> "test".icompare "tEst";;
val it : bool = true

4
如何编写扩展方法使之更简洁。

4
很棒的建议,为了进一步扩展你的答案,我使用了以下代码:let (=?) s1 s2 = System.String.Equals(s1, s2, System.StringComparison.CurrentCultureIgnoreCase) - Joshua

0

对于任何感兴趣的人,这是一个部分的活动模式:

let (|InvariantEqualI|_|) (str:string) arg = 
  if String.Compare(str, arg, StringComparison.InvariantCultureIgnoreCase) = 0
  then Some() else None
let (|OrdinalEqualI|_|) (str:string) arg = 
  if String.Compare(str, arg, StringComparison.OrdinalIgnoreCase) = 0
  then Some() else None

0
// Contains substring
(str1.ToUpper()).Contains (str2.ToUpper())
// Equality
(str1.ToUpper()).Contains (str2.ToUpper())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接