2010-10-24 7 views
0

J'ai un fichier qui est censé être \ n \ n délimité, mais bien sûr ce n'est pas le cas. Certaines des lignes contiennent des espaces après le \ n \ n. Comment puis-je trouver un supprimer tous les espaces après un \ n \ n qui commence une nouvelle ligne mais qui est avant tout autre caractère.C# Regex Remplacer

Exemple:

\n\nData,Mo re,Data 
\n\n Some,Li st,Of 
\n\n\nOther,St uff 
\n\n\n\n This is another 

désiré Sortie

\n\nData,Mo re,Data 
\n\nSome,Li st,Of 
\n\nOther,St uff 
\n\nThis is another 

Regex est probablement la réponse, mais je suis encore à apprendre regex. Voici plus ou moins ce que j'ai trouvé Regex.Replace(input,"^(\n{2,}\s*)", "\n\n") mais cela ne fonctionne pas.

Édition: Je devrais noter que je pré-convertis de divers codages de rupture de ligne différents à \n avant que ce code soit nécessaire.

Répondre

2

La barre oblique inverse doit s'échapper. Essayez:

Regex.Replace(input,"^(\n{2,}\\s*)", "\n\n") 

En outre, vous devriez envisager de changer \\s* à \\s+ de sorte que vous ne remplacez pas la ligne valide commence unnecesarily.

+1

Cela pourrait être le problème. Mais alors le code de l'OP n'aurait même pas été compilé puisque la séquence d'échappement '\ s' n'est pas reconnue dans une chaîne non-verbatim, donc je me demande .. – Ani

+0

Je pense que l'OP doit conserver les \\ s * à cause du bases de sortie souhaitées sur l'entrée donnée. Notez que l'OP veut aussi \ n \ n \ n remplacé par \ n \ n. – Les

0
 string test = "\n\nData,Mo re,Data \r\n\n\n Some,Li st,Of \r\n\n\n\nOther,St uff \r\n\n\n\n\n This is another \r\n"; 
     string pattern = "^\n{2,}\\s*"; 
     string result = Regex.Replace(test, pattern, "\n\n", RegexOptions.Multiline); 

D'abord, vous avez besoin de l'option Multiline. Deuxièmement, à quoi ressemblent vos données? Notez que lorsque vous avez un cr-lf visible, je le mets en \ r \ n. Je l'ai fait parce que vous avez dit que c'est un \ n \ n au début d'une ligne qui délimite les données. Le \ n est source de confusion, alors assurez-vous de vos données.