2009-05-16 12 views

Respuesta

162

Esto recortar cualquier combinación de los retornos de carro y saltos de línea desde el final de s:

s = s.TrimEnd(new char[] { '\r', '\n' }); 

Editar: O como JP amablemente señala, que puede significar que más sucintamente como:

s = s.TrimEnd('\r', '\n'); 
+8

Tomar nota de la palabra clave params en la declaración de TrimEnd, que vamos a pasar varias instancias de un personaje en vez de la matriz. http://msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx –

+2

Qué tal esto: s = s.TrimEnd (System.Environment.NewLine.ToCharArray()); –

+4

He estado escribiendo C# desde que salió v1.0 (hace 10 años). Ahora cuéntame sobre TrimEnd. Doh! – s15199d

28

Esto debería funcionar ...

var tst = "12345\n\n\r\n\r\r"; 
var res = tst.TrimEnd('\r', '\n'); 
4

Si siempre hay un solo CRLF, entonces:

myString = myString.Substring(0, myString.Length - 2); 

Si se puede o no tenerlo, entonces:

Regex re = new Regex("\r\n$"); 
re.Replace(myString, ""); 

Ambos de estos (por diseño), se eliminará como máximo un solo CRLF . Guarde en caché la expresión regular para el rendimiento.

9
String temp = s.replace("\r\n","").trim(); 

s siendo la cadena original.

+10

Eso también: 1) Eliminar \ r \ n del centro de la cadena, 2) Eliminar los espacios en blanco del inicio de la cadena, y 3) eliminar los espacios en blanco del final de la cadena. – RichieHindle

+0

Cierto, asumí solo una/r/n al final. No fue mencionado en el post original. No estoy seguro de que warrents a -1 vote – Crash893

+0

Exactamente lo que estaba buscando. Gracias. – NotMe

4

Para nosotros VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf}) 
2
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!"; 
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " "); 
0
varName.replace(/[\r\n]/mg, '')            
3

Este fue demasiado fácil - para mí que estoy filtrando ciertos elementos de correo electrónico. Estoy escribiendo mi propio filtro de correo no deseado personalizado. Con \ r y/o \ n en la cadena borraba todos los elementos en lugar de filtrar.

Así que acabo de filtrar = filtrar.Retirar ('\ n') y filtrar = filtrar.Retirar ('\ r'). Estoy creando mi filtro de manera que un usuario final pueda usar el Bloc de notas para editar directamente el archivo, por lo que no se sabe dónde podrían incrustarse estos caracteres, que podría ser diferente al comienzo o al final de la cadena. Entonces eliminarlos a todos lo hace.

Las otras entradas funcionan pero Remove podría ser la más fácil?

Aprendí un poco más sobre Regex de este post, un trabajo bastante bueno con su uso aquí.

+0

Parece que podría hacer simplemente 'filter = filter.Remove ('\ n'). Eliminar ('\ r');' –

17

Si está utilizando plataformas múltiples, está más seguro utilizando este método.

value.TrimEnd(System.Environment.NewLine.ToCharArray()); 

Representará diferentes caracteres de nueva línea y retorno de carro.

+0

Método de JP - 'tst.TrimEnd ('\ r', ' \ n ') '- es razonablemente" seguro "en la práctica ya que las EOL principales son [actualmente] combinaciones diferentes de' \ r' y '\ n', pero la de alexw es la respuesta" correcta ". * Deja que CLR te diga qué caracteres están en la nueva línea de esta plataforma. * [EOL no siempre ha sido combos de 0D y 0As] (http://en.wikipedia.org/wiki/Newline#Representations) – ruffin

+0

Solía ​​usar 'Environment.NewLine', pero no parecía manejar instancias donde' \ r' estaba presente sin '\ n'. 'TrimEnd ('r', '\ n')' parece ser más confiable en este caso. –

+2

Podría ser que esto sea realmente un problema multiplataforma, y ​​dec necesita eliminar específicamente ambos \ r \ n, independientemente de lo que diga el entorno del sistema. –

5
s.TrimEnd(); 

Lo anterior es todo lo que necesitaba para eliminar '\ r \ n' del final de la cadena.

La respuesta aumentada me parece incorrecta. En primer lugar, no funcionó cuando lo intenté; en segundo lugar, si funcionaba, esperaría que s.TrimEnd ('\ r', '\ n') solo eliminaría una '\ r' o una '\ n', así que tendría que ejecutarla sobre la cadena dos veces, una para cuando '\ n' estaba al final y la segunda vez cuando '\ r' estaba al final (ahora que se eliminó '\ n').

1

que usar un montón de borrar nivel

String donen = "lots of stupid whitespaces and new lines and others..." 

//Remove multilines 
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline); 
//remove multi whitespaces 
RegexOptions options = RegexOptions.None; 
Regex regex = new Regex("[ ]{2,}", options); 
donen = regex.Replace(donen, " "); 
//remove tabs 
char tab = '\u0009'; 
donen = donen.Replace(tab.ToString(), ""); 
//remove endoffile newlines 
donen = donen.TrimEnd('\r', '\n'); 
//to be sure erase new lines again from another perspective 
donen.Replace(Environment.NewLine, ""); 

y ahora tenemos una fila limpia

Cuestiones relacionadas