2009-11-26 8 views
2

Je travaille sur un bot wiki pour mon wiki de communautés qui utilise le Framework DotNetWikiBot; c'est de trouver un mot qui est couramment une faute de frappe (comme "abilty") et les remplace par la correction (comme "capacité").C# text.Replace preserve case

Cela fonctionne tel quel est codé:

p.text = p.text.Replace(@"\b" + typoArray[x, 0] + @"\b", typoArray[x, 1]); 

Cependant, cela remplacera « abilty » par « capacité » qui est bien sûr va causer des problèmes, mais je ne peux pas comprendre comment préserver le cas du mot remplacé (Abilty devient Capacité) sauf si le remplacement de faute de frappe est censé être en majuscule, peu importe ce qu'il remplace: janvier à janvier

+1

Comment ajouter des caractères? Devrait-on remplacer "ABiLtY" par "ABiLitY" ou "aBIlItY"? – Guffa

+0

Non, aBiLitY devrait être remplacé par capacité et ABiLitY devrait être remplacé par capacité. – Windos

+0

Ce sont de simples mots de dictionnaire, donc il ne devrait pas y avoir de majuscules, sauf au début d'une phrase ou d'un nom. – Windos

Répondre

1

Je pense que vous ferez mieux d'utiliser les expressions régulières de l'espace de noms System.Text.RegularExpressions.

Regex.Replace (str, "[A]", "Z"); ou une variante de celui-ci. Les expressions régulières sont puissantes.

+0

Merci, votre réponse m'a conduit à la droite psth pour trouver ce dont j'avais besoin. – Windos

Questions connexes