7
votes

F # Case String Insensible Comparer

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)

f#

0 commentaires

4 Réponses :


3
votes

Que diriez-vous d'écrire une méthode d'extension pour rendre cela plus court.


1 commentaires

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)




0
votes

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


0 commentaires

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

0 commentaires