Respuestas:
Esto recortará cualquier combinación de retornos de carro y nuevas líneas desde el final de s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Editar : O como JP amablemente señala, puede deletrearlo de manera más sucinta como:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
, como dicen los documentos: si trimChars es nulo o una matriz vacía, los caracteres de espacio en blanco Unicode se eliminan en su lugar. - ver String.TrimEnd
'\r'
y '\n'
y nada más, no el carácter de espacio ' '
, por ejemplo.
Si está utilizando varias plataformas, está más seguro utilizando este método.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Tendrá en cuenta diferentes caracteres de nueva línea y retorno de carro.
tst.TrimEnd( '\r', '\n' )
- es razonablemente "seguro" en la práctica ya que los principales EOL son [actualmente] solo combinaciones diferentes de \r
y \n
, pero el de alexw es la respuesta "correcta". Deje que CLR le diga qué caracteres hay en la nueva línea de esta plataforma. EOL no siempre ha sido combos de 0DS y 0AS
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.
String temp = s.Replace("\r\n","").Trim();
s
siendo la cadena original. (Nota capitales)
replace()
entonces trim()
no es exagerado cuando TrimEnd()
puedo hacer el trabajo solo, o me estoy perdiendo algo?
s.TrimEnd();
Lo anterior es todo lo que necesitaba para eliminar '\ r \ n' del final de mi cadena.
La respuesta votada a favor me parece incorrecta. En primer lugar, no funcionó cuando lo probé, en segundo lugar, si lo hizo el trabajo que se puede esperar que s.TrimEnd ( '\ r', '\ n') sería eliminar sólo sea un '\ r' o una '\ n' , así que tendría que pasarlo por mi cadena dos veces: una para cuando '\ n' estaba al final y la segunda vez para cuando '\ r' estaba al final (ahora que se eliminó el '\ n') .
Si siempre hay un solo CRLF, entonces:
myString = myString.Substring(0, myString.Length - 2);
Si puede tenerlo o no, entonces:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Ambos (por diseño) eliminarán como máximo un único CRLF. Almacene la expresión regular en caché para el rendimiento.
Esto fue demasiado fácil, para mí 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, estaba borrando todos los elementos en lugar de filtrar.
Entonces, acabo de hacer filter = filter.Remove ('\ n') y filter = filter.Remove ('\ r'). Estoy haciendo mi filtro de modo que un usuario final pueda usar el Bloc de notas para editar directamente el archivo, por lo que no se sabe dónde pueden incrustarse estos caracteres; podría ser otro que al principio o al final de la cadena. Así que eliminarlos todos lo hace.
Todas las demás entradas funcionan, pero ¿Eliminar podría ser la más fácil?
Aprendí bastante más sobre Regex en esta publicación: un trabajo bastante bueno con su uso aquí.
filter = filter.Remove('\n').Remove('\r');
Uso mucho nivel de borrado
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
Esto es lo que conseguí trabajar para mí.
s.Replace("\r","").Replace("\n","")