2009-06-01 8 views
0

J'ai une très longue chaîne. Je voudrais ajouter un saut de ligne tous les 80 caractères. Existe-t-il un modèle de remplacement d'expression régulière que je peux utiliser pour insérer "\ r \ n" tous les 80 caractères? J'utilise C# si c'est important.Comment utiliser une expression régulière pour ajouter des sauts de ligne?

Je voudrais éviter d'utiliser une boucle.

Je n'ai pas besoin de m'inquiéter d'être au milieu d'un mot. Je veux juste insérer un saut de ligne exactement tous les 80 caractères.

+0

Voulez-vous vraiment le faire tous les quatre-vingts caractères ou seulement le faire lors de sauts de mots? –

+0

PHP a http://www.php.net/wordwrap, je serais choqué si quelque chose n'existe pas pour cela en C# –

+0

Franchement, une expression régulière pour mettre en forme une colonne de largeur fixe comme ceci est probablement au bas de ma liste de façons de le faire. Sauvegarder une simple boucle for (qui peut être jetée dans une méthode statique) en échange d'une expression régulière ressemble à une bombe nucléaire pour tuer une mouche. –

Répondre

5

Je ne sais pas le nom exact C#, mais il devrait être quelque chose comme

str.Replace("(.{80})", "$1\r\n"); 

L'idée est de saisir 80 caractères et l'enregistrer dans un groupe, puis le remettre dans (je pense " $ 1 "est la bonne syntaxe) avec le" \ r \ n ".

(Edit: Le regex original avait une + en elle, que vous ne voulez certainement pas que cela éliminer complètement tout sauf la dernière ligne et tous les morceaux restants - un résultat nettement suboptimale..)

Notez que de cette façon, vous allez probablement diviser les mots à l'intérieur, de sorte qu'il pourrait être très moche.

Vous devriez plutôt vous intéresser à l'habillage de mots si c'est en fait censé être un texte lisible. Un peu googling a augmenté un couple de functions; ou s'il s'agit d'une zone de texte, vous pouvez simplement activer le WordWrap property.

En outre, consultez le .Net page à regular-expressions.info. C'est de loin le meilleur site de référence pour les regex que je connaisse. (Jan Goyvaerts est sur SO, mais personne ne m'a dit de le dire.)

+0

Cela a fonctionné parfaitement. La chaîne ne contient pas de mots. Je vous remercie. – Chris

Questions connexes