una txt tabulaciones saltos salto quitar primer linea hacer eliminar concatenar con caracter cadena c# .net

c# - txt - ¿Cómo eliminar nuevos caracteres de línea de una cadena?



quitar saltos de linea c# (10)

Tengo una cadena en el siguiente formato

string s = "This is a Test String./n This is a next line./t This is a tab./n''

Quiero eliminar todas las ocurrencias de /n y /r de la cadena de arriba.

He intentado con la string s = s.Trim(new char[] {''/n'', ''/r''}); pero no ayudó.


Bueno ... Me gustaría que entendieras áreas más específicas del espacio. /t realidad está clasificado como un espacio horizontal, no como un espacio vertical. (pruebe insertar /t en el Bloc de notas)

Si usa Java, simplemente use /v . Ver la referencia a continuación.

/h - Un carácter de espacio en blanco horizontal:

[/t/xA0/u1680/u180e/u2000-/u200a/u202f/u205f/u3000]

/v - Un carácter de espacio en blanco vertical:

[/n/x0B/f/r/x85/u2028/u2029]

Pero soy consciente de que usas .NET. Entonces mi respuesta para reemplazar cada espacio vertical es ...

string replacement = Regex.Replace(s, @"[/n/u000B/u000C/r/u0085/u2028/u2029]", "");


Desea utilizar String.Replace para eliminar un personaje.

s = s.Replace("/n", String.Empty); s = s.Replace("/r", String.Empty); s = s.Replace("/t", String.Empty);

Tenga en cuenta que String.Trim(params char[] trimChars) solo elimina los caracteres trimChars y finales en trimChars de la instancia invocada.

Puede hacer un método de extensión, que evita los problemas de rendimiento de lo anterior al hacer muchas cadenas temporales:

static string RemoveChars(this string s, params char[] removeChars) { Contract.Requires<ArgumentNullException>(s != null); Contract.Requires<ArgumentNullException>(removeChars != null); var sb = new StringBuilder(s.Length); foreach(char c in s) { if(!removeChars.Contains(c)) { sb.Append(c); } } return sb.ToString(); }


FYI,

Trim () hace eso ya.

La siguiente muestra de LINQPad:

void Main() { var s = " /rsdsdsdsd/nsadasdasd/r/n "; s.Length.Dump(); s.Trim().Length.Dump(); }

Productos:

23 18


La elección correcta depende de cuán grande sea la cadena de entrada y cuáles sean los requisitos de memoria y fuerza, pero usaría una expresión regular como

string result = Regex.Replace(s, @"/r/n?|/n|/t", String.Empty);

O si necesitamos aplicar el mismo reemplazo varias veces, es mejor usar una versión compilada para el Regex como

var regex = new Regex(@"/r/n?|/n|/t", RegexOptions.Compiled); string result = regex.Replace(s, String.Empty);

NOTA: diferentes escenarios requieren diferentes enfoques para lograr el mejor rendimiento y el mínimo consumo de memoria


Me gusta usar expresiones regulares En este caso, podrías hacer:

string replacement = Regex.Replace(s, @"/t|/n|/r", "");

Las expresiones regulares no son tan populares en el mundo .NET como lo son en los lenguajes dinámicos, pero proporcionan una gran cantidad de poder para manipular cadenas.


Puede usar Trim si desea eliminar desde el inicio y el final.

string stringWithoutNewLine = "/n/nHello/n/n".Trim();



Si la velocidad y el uso de poca memoria son importantes, haga algo como esto:

var sb = new StringBuilder(s.Length); foreach (char i in s) if (i != ''/n'' && i != ''/r'' && i != ''/t'') sb.Append(i); s = sb.ToString();


Un enfoque LINQ:

string s = "This is a Test String./n This is a next line./t This is a tab./n''"; string s1 = String.Join("", s.Where(c => c != ''/n'' && c != ''/r'' && c != ''/t''));


solo haz eso

s = s.Replace("/n", String.Empty).Replace("/t", String.Empty).Replace("/r", String.Empty);