Soyez le premier à donner votre avis sur cette source.
Snippet vu 21 410 fois - Téléchargée 27 fois
/// <summary> /// Remplace une chaine comprise entre 2 bornes /// </summary> /// <param name="orig">Chaine d'origine</param> /// <param name="debut">Borne de début</param> /// <param name="fin">Borne de fin</param> /// <param name="remplacement">Chaine de remplacement</param> /// <param name="laisseBornes">Si true la chaine résultant conserva les bornes</param> /// <returns>Chaine résultat</returns> public string RemplaceChaineEntre(string orig, string debut, string fin, string remplacement, bool laisseBornes) { // on construit l'expression régulière en fonction // des paramètres passés string pattern = string.Format("({0})(.*?)({1})", debut, fin); // on instancie un objet Regex Regex regex = new Regex(pattern, RegexOptions.Singleline); // on retourne une chaine dans laquelle on a remplacé // la portion désirée if (laisseBornes) { return regex.Replace(orig, "$1" + remplacement + "$3"); } else { return regex.Replace(orig, remplacement); } }
25 janv. 2011 à 17:26
Merci pour cette solution...
En utilisant la fonction RemplaceChaineEntre j'ai une erreur
lorsque je cherche à remplacer une chaine entre deux bornes du type
borne 1 : "/*"
borne 2 : "*/"
Quelqu'un peut-il m'expliquer comment comment l'adapter le code ?
Ex de chaine :
"/* mon commentaire (SQL par exemple) puis ma requete */
SELECT FROM WHERE
/* un autre commentaire */ "
Valeur attendue : SELECT FROM WHERE
9 août 2006 à 09:15
Pour récupérer le résultat de la capture d'une expression régulière, il faut utiliser la méthode Match sur ta chaine.
Ainsi on aura :
public string ChercheChaineEntre(string orig, string debut, string fin) {
// on construit l'expression régulière en fonction
// des paramètres passés
string pattern = string.Format("(?:{0})(.*?)(?:{1})", debut, fin); // on utilise ?: pour ne pas récupérer le résultat à la fin
// on instancie un objet Regex
Regex regex = new Regex(pattern, RegexOptions.Singleline);
return regex.Match(orig).Value;
}
voila :)
8 août 2006 à 16:46
7 janv. 2006 à 20:27
le pattern "({0})(.*?)({1})" permet de chercher tout texte qui se trouve entre la borne {0} et la borne {1}
7 janv. 2006 à 16:59
Est-il possible, à l'aide de ce code par exemple, de récupérer une partie inconnue d'une string, cette partie se trouvant entre deux "bornes" connues.
Dans l'exemple ci dessous, je souhaiterai ne récupérer que "C'est la chaine que je souhaite récupérer", comprise entre "Bonjour" et "Salut"
exemple de string :
"dsjqkldjkslqjkdl dsqd ; dsqjkl, <>ds? Bonjour C'est la chaine que je souhaite récupérer Salut rezpoirezpoifdjskl"
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.