Je remplace toutes les occurrences de Fondamentalement, si plus de 1 \ N se produit ensemble, remplacez-le par une seule étiquette d'une seule étiquette. P>
Quelqu'un peut-il m'aider avec ça? P> \ n code> avec la balise code> code>, mais pour une raison quelconque, le texte entré a plusieurs
\ n code> dans une rangée, j'ai donc besoin de les combiner. P>
3 Réponses :
Utilisez le code suivant:
int oldLength; do { oldLength = str.Length; str = str.Replace('\r', '\n'); str = str.Replace("\n\n", "\n"); } while(str.Length != oldLength); str = str.Replace("\n", "<br />");
Ceci remplacera toute séquence de récupérations de chariot ( Si vous souhaitez uniquement remplacer les séquences de deux éléments ou plus, la réponse simpliste consiste à utiliser le quantificateur Notez que l'expression ci-dessus traitera le Combinaison CR + LF commune en tant que séquence de deux éléments. Il est probable que vous souhaitiez traiter le CR + LF comme un seul article à la place, auquel cas l'expression devient légèrement plus compliquée: p> \ r code>) et / ou lignesfeeds (
\ n code>) avec un seul
Code>: {2,} code> (ce qui signifie " au moins deux répétitions ") au lieu de
+ code> (ce qui signifie" au moins une répétition "): p>
\ r est pour les retours de chariot. Dans le texte formaté de Windows (DOS), vous verrez des combinaisons d'alimentation de retour de chariot / ligne sous forme de \ r \ n.
Serait-il possible de définir un minimum de 2 répétitions avant un remplacement?
Oui, c'est ce que ma réponse a été une tentative de faire. \ n \ n + le fera. Mais si vous voulez des retours de chariot inclus, cela fonctionnera à la place: (\ r \ n) (\ r \ n) +
Cela ne fonctionnerait que pour le texte de style Windows / DOS (nécessitant les deux). Selon votre moteur de regex, quelque chose comme: S / (?: \ R | \ n | \ r \ n) {2} /
/ fonctionnerait.
@Brice: Votre regex traitera \ r \ n code> comme une séquence de deux plutôt qu'un seul élément. Voir la troisième regex dans ma réponse, qui gère
\ r code>,
\ n code> ou
\ r \ n code> et traite chacun d'eux comme un seul Objet.
@Luke Pourquoi existe-t-il un << / code> dans le 3ème segment?
@smallatom: Vous avez trouvé une faute de frappe qui est assise ici depuis plus de cinq ans! Cela fait partie d'un Attention négative assertion, mais il aurait dû lire ? plutôt que
?! << / code>. Je viens de modifier pour le réparer.
Notez que string.replace () est beaucoup plus rapide que d'utiliser regex:
Cela ne gérera pas trois nouvelles lignes; Vous devez l'appeler dans une boucle. Voir ma réponse.
Ne sous-estimez pas vous-même. Si vous savez même ce qu'est une regex, vous connaissez probablement la réponse à cette question déjà.