0
votes

Ignorer les points d'interrogation lors de la comparaison de 2 cordes

J'ai

QuestionStrings.Contains(userInput, StringComparer.OrdinalIgnoreCase);


0 commentaires

4 Réponses :


0
votes

Vous pouvez essayer ceci:

QuestionStrings.Contains(userInput.Replace("?","").Trim(), StringComparer.OrdinalIgnoreCase);


1 commentaires

Sauf si vous supprimez les points d'interrogation des chaînes dans questions , cela ne donnera jamais une réponse correcte ...



1
votes

au lieu de les ignorer, vous pouvez les supprimer en premier lieu de votre liste et les supprimer de la chaîne d'entrée lors de la comparaison: xxx pré>

une autre option, si vous insistez pour conserver le Les points d'interrogation dans la liste, sont d'utiliser tout code> au lieu de contenant code> - qui vous permettra d'utiliser une expression Lambda pour effectuer la comparaison: P>

QuestionStrings.Any(s => s
    .Replace('?', '')
    .Equals(userInput.Replace('?', ''), StringComparison.OrdinalIgnoreCase));


2 commentaires

Merci beaucoup. Ça a marché. Mais y a-t-il une autre façon de le faire? peut-être une regex? parce que je pourrais avoir besoin d'utiliser cette liste, y compris les points d'interrogation dans une autre classe


J'ai modifié ma réponse pour inclure une autre option qui vous permet de conserver les points d'interrogation dans la liste. Vous pouvez utiliser une expression régulière au lieu de remplacer, mais je ne pense pas que cela fera une grande partie de la différence.



0
votes

Vous pouvez utiliser ce qui est mentionné ici: https://stackoverflow.com/a/368850/8233385 Le but est d'analyser chaque char de la chaîne afin de ne prendre que des caractères à z


1 commentaires

S'il vous plaît ne lienez pas à une réponse. Au lieu de cela, résumez le contenu de la réponse ici et assurez-vous de donner une attribution adéquate .



1
votes

Une approche flexible et expressif du code serait de définir vos exigences avec la liste des expressions régulières (éventuellement stockées dans une table de ressources ou une base de données), puis traduisez les personnes en logique d'exécution directement.

Initialisation: P> >

var match = regexs.Any( x => x.IsMatch( userInput ) );


0 commentaires