Utilisé une regex pour remplacer des occurrences
Résolu/Fermé
A voir également:
- Utilisé une regex pour remplacer des occurrences
- Remplacer disque dur par ssd - Guide
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Remplacer word - Guide
- Comment savoir si quelqu'un utilise mon adresse ip - Guide
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
2 réponses
Utilisateur anonyme
Modifié le 17 janv. 2019 à 21:20
Modifié le 17 janv. 2019 à 21:20
La regex maintenant, il y a de nombreux sites qui permettent de tester les regex. L'avantage est de voir instantanément le résultat de son pattern.
Comme il y a quelques différences d'implémentations d'un langage à l'autre, je te conseille regexstorm.net qui applique l'implémentation .Net
http://regexstorm.net/tester?p=%5Cbfr%5Cb&i=+FR+%2F+Francais+%2F+Fr+%2F+Francois+%2F+Fromage+%2F+fR+&r=FRANCE&o=i
Clique sur l'onglet Context pour voir le résultat. Tu remarqueras que j'ai coché "IgnoreCase" et "Replace with"
Et voilà l'implémentation en C#
Comme il y a quelques différences d'implémentations d'un langage à l'autre, je te conseille regexstorm.net qui applique l'implémentation .Net
http://regexstorm.net/tester?p=%5Cbfr%5Cb&i=+FR+%2F+Francais+%2F+Fr+%2F+Francois+%2F+Fromage+%2F+fR+&r=FRANCE&o=i
Clique sur l'onglet Context pour voir le résultat. Tu remarqueras que j'ai coché "IgnoreCase" et "Replace with"
Et voilà l'implémentation en C#
string res = Regex.Replace("FR / Francais / Fr / Francois / Fromage / fR ", @"\bfr\b", "France", RegexOptions.IgnoreCase);
Utilisateur anonyme
17 janv. 2019 à 19:38
17 janv. 2019 à 19:38
Bonsoir,
commençons par la fin
Entre la console, qui n'est franchement utile pour débuguer que si le code doit s'exécuter vite et sans interruption (traitement d'un flux par exemple), et le messagebox il y a quand même tout un tas d'outils de débug, des vrais proposés par VS.
https://openclassrooms.com/fr/courses/1526901-apprenez-a-developper-en-c/2867766-utilisez-le-debogueur
Pour débusquer un code comme celui que tu présentes, un point d'arrêt, des espions et éventuellement un peu de pas à pas est bien plus efficace.
commençons par la fin
PS : si par miracle vous savez comment faire apparaître la console VS lors de l’exécution je suis preneur.
je suis actuellement obliger de debug avec des messageBox (c'est pas ultra ouf).
Entre la console, qui n'est franchement utile pour débuguer que si le code doit s'exécuter vite et sans interruption (traitement d'un flux par exemple), et le messagebox il y a quand même tout un tas d'outils de débug, des vrais proposés par VS.
https://openclassrooms.com/fr/courses/1526901-apprenez-a-developper-en-c/2867766-utilisez-le-debogueur
Pour débusquer un code comme celui que tu présentes, un point d'arrêt, des espions et éventuellement un peu de pas à pas est bien plus efficace.
17 janv. 2019 à 21:23
Une regex est capable d'avaler un fichier entier, plus rapidement (en général) que ligne par ligne.
18 janv. 2019 à 08:48
content de te retrouver et merci de ton assiduité .
ma regex semble bonne pour ce que je veut en faire mais le soucis c'est son pattern qui doit changer régulièrement . quand j'utilise le format suivant : @"\bfr\b"
cela marche aussi bien que dans ton exemple mais c'est pas le cas quand je fournie mon tableau qui contient tous les mots a rechercher : @"\b" + r[0] + "\b"
a ce moment la, il semble ne plus bien comprendre les balise \b et recherche tous mes mots avec un b en première lettre (et du coup il trouve rien)
18 janv. 2019 à 09:10
Le problème à mon avis dans ton code, c'est que tu échappes la première chaîne @"\b" avec le @, mais pas la deuxième, qui ne contiendra donc pas @"\b" mais le caractère de contrôle Backspace.
Bref, remplace par
Xavier
18 janv. 2019 à 09:14
ça semble effectivement être l'une des solutions !
je venais de corriger ce problème par moi même au moment ou tu as poster ta réponse.
voici ma version :
content = Regex.Replace(content, String.Format(@"\b{0}\b", r[0]), r[1], RegexOptions.IgnoreCase);
mon sujet passe donc en résolût une fois de plus grâce a votre aide !!
merci beaucoup
18 janv. 2019 à 12:45
Puisque le mot à remplacé est dans le même texte, on peut certainement écrire une regex unique qui fait tout.
Peux tu poster une ligne complète ?