begin process at 2012 02 11 13:37:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > REMPLACER UNE CHAINE COMPRISE ENTRE 2 BORNES

REMPLACER UNE CHAINE COMPRISE ENTRE 2 BORNES


 Information sur la source

Note :
Aucune note
Catégorie :.NET Source .NET ( DotNet ) Classé sous :regex, replace, regularexpressions, remplacement, doublon Niveau :Débutant Date de création :01/12/2005 Date de mise à jour :05/09/2006 14:59:34 Vu :17 676

Auteur : sebmafate

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

C'est une question que l'on nous pose régulièrement sur les forums :

"Comment remplacer une chaine qui se trouve entre 2 bornes par une autre"

EDIT : ajout d'un snippet à Codyx permettant le remplacement des doublons dans une chaine de caractères (http://www.codyx.org/snippet_remplacement-doublon -dans-chaine_216.aspx)

Source

  • /// <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);
  • }
  • }
/// <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);
	}
}



 Historique

07 décembre 2005 22:10:03 :
ajout du ?
05 septembre 2006 14:59:34 :
Ajout lien vers Codyx

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION DE CLASSES MÉTIERS À PARTIR D'UNE BASE DE DONNÉES
Source avec Zip Source .NET (Dotnet) SILVERLIGHT : METTEZ UNE TOUCHE D'AOP DANS VOS CONTRÔLES
Source avec Zip Source avec une capture Source .NET (Dotnet) BATCHIMAGECONVERTER
Source avec Zip Source .NET (Dotnet) MAFBINDERHELPER : UNE CLASSE POUR BINDER AUTOMATIQUEMENT VOS...
Source avec Zip Source .NET (Dotnet) WINDOWS FORMS VALIDATORS

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONBANQUE par toutphp
Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONAPPLICATION par toutphp
Source avec Zip SOCKET CONNEXION CLIENT & SERVEUR par ziedto83
Source avec Zip Source .NET (Dotnet) FFMPEG.NET : WRAPPER .NET DE FFMPEG par MasterShadows
Source avec Zip Source .NET (Dotnet) ATTACHER, CRÉER ET SAUVEGARDER UNE BASE DE DONNÉES SQL SERVE... par Alvepinai

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) T-SQL FORMATER par Warny
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source avec une capture Source .NET (Dotnet) YREGEXTER - THE REGEX TESTER par pysco68
Source avec Zip Source avec une capture Source .NET (Dotnet) TRADUCTEUR ALGO VISUAL BASIC .NET/C# par rhonin33
Source avec Zip Source avec une capture Source .NET (Dotnet) SCANNER IP par Ricky_MacElroy

Commentaires et avis

Commentaire de xavy94 le 07/01/2006 16:59:50

Bonjour,

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"

Commentaire de sebmafate le 07/01/2006 20:27:27 administrateur CS

c'est justement le principe de cette source :D
le pattern "({0})(.*?)({1})" permet de chercher tout texte qui se trouve entre la borne {0} et la borne {1}

Commentaire de fab244 le 08/08/2006 16:46:55

J'ai la même question que Xavy et je n'ai pas compris ta réponse, pourrais tu réecrire la fin si l'on veut récupérer la chaîne entre les bornes et non la remplacer ?

Commentaire de sebmafate le 09/08/2006 09:15:46 administrateur CS

ok... il suffit pourtant de lire la documentation.

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 :)

Commentaire de soliloque le 25/01/2011 17:26:20

Bonjour,
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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Regex.Replace [ par GuinaweK ] Bonsoir,j'aurai voulu savoir s'il était possible de remplacer une expression régulière par une autre expression régulière. En pratique, j'essaye de pa Remplacement de caractères spéciaux [ par alphacrash ] Voilà une fonction convertir_special() que j'utilise comme ceci: textbox5.text=convertir_special(titre), titre étant une chaine vous vous en doutez.Lo [C#] Regex.Replace [ par Krasha ] Bonjour à tous, Je tente une regex pour extraire certaines données d'un fichier texte, j'ai des parenthèses capturantes (.+) qui renferment les valeu parenthèses capturantes [ par Krasha ] Bonjour à tous, Je pose cette question alors que je n'en ai pas vraiment besoin (mon problème à déjà été réglé brillament par Bidou) mais plutot pour [BAR]Remplacement de firmware [ par agro0 ] Bonjour, Avant tout je suis débutant! J'ai deux caméras parfaitement identique mais avec deux firmwares totalement diffrents. Je voudrais transférer [Aide] Problème pour ma première expression régulière [ par Nixeus ] Bonjour à tous, Je n'ai jamais utilisé les expressions régulières et je souhaiterai les utiliser. Je souhaite savoir si une chaine de caractère comm pattern Regex [ par zatt ] Bonjour, Je poste ici n'étant parvenu à trouver un thème plus approchant. Je cherche à définir un modèle permettant de vérifier les noms des fichiers replace ne marche pas [ par adleni ] string x=textBox1.Text; if (x.IndexOf("bb") != -1) x.Replace("bb",","); else MessageBox.Show("non"); M Problème de regex avec requête ... [ par alphacrash ] Salut, voilà mon problème:Je parse une chaine comprenant des balises telles que &lt;img43|left&gt; où 43 est un identifiant utilisé dans la base de do regex date [ par baldemic ] Bonjour,Je souhaiterai formater (en une seule opération) une date : 08/11/2008 08:33:25 en 08-11-2008 08h33m25 à l'aide d'une expression régulière.Je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,931 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales