Y a-t-il un moyen syntaxiquement plus propre d'effectuer une comparaison de chaîne insensible à la case dans F # que le suivant
System.String.Equals("test", "TeSt", System.StringComparison.CurrentCultureIgnoreCase)
4 Réponses :
Que diriez-vous d'écrire une méthode d'extension pour rendre cela plus court. P>
Merveilleuse suggestion, juste pour développer sur vous répondre, j'ai utilisé ce qui suit Let (=?) S1 S2 = System.Quant.equals (S1, S2, System.stringcomparison.CurrentCultureCase)
Pour tout type intéressé, un modèle actif partiel pour cela:
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
// Contains substring (str1.ToUpper()).Contains (str2.ToUpper()) // Equality (str1.ToUpper()).Contains (str2.ToUpper())