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

时间:2009-12-20 19:43:29

标签: f#

是否有一种语法更清晰的方法来在F#中执行不区分大小写的字符串比较,而不是以下

System.String.Equals("test", "TeSt", System.StringComparison.CurrentCultureIgnoreCase)

4 个答案:

答案 0 :(得分:9)

此外,您可以使用F# type extensions机制:

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

答案 1 :(得分:3)

如何编写扩展方法以缩短它。

答案 2 :(得分: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

答案 3 :(得分:0)

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