2010-12-15 50 views
7

Al importar datos desde un archivo plano, noté que algunas líneas tienen incrustados espacios que no se rompen (Hex: A0).Eliminar carácter específico de una cadena según el valor hexadecimal

Me gustaría eliminar estos, pero el string.replace estándar no parece funcionar y había considerado utilizar regex para reemplazar la cadena, pero no sabría qué buscaría la expresión regular para eliminarla.

En lugar de convertir toda la cadena en hexadecimal y examinar eso, ¿hay una manera mejor?

+2

Reemplazar debe manejar eso, ¿puede mostrar el código (que falló)? –

Respuesta

19

¿Por qué no funciona la cadena.Sustituir?

stringVar.Replace((char)0xA0, ' '); 
+0

Lo anterior cambia a blanco, ¿verdad? ¿Cómo lo eliminas por completo? Intenté "" y "", pero aparentemente si tienes un carácter a la izquierda del reemplazo, debes tener un carácter en el lado derecho. – NealWalters

+0

@NealWaters: Necesita utilizar la versión de cadena de 'Reemplazar' con' nulo' como el segundo parámetro. –

12
Regex.Replace(input, "\xA0", String.Empty); 

Esto debería hacerlo.

3

¿Funcionaría para usted?

var myNewString = myCurrentString.Replace("\n", string.Empty); 
myNewString = myNewString.Replace("\r", string.Empty); 

"\n" es AvLínea ASCII, "\r" es el rendimiento.

+1

Ninguno de estos es el carácter de espacio no disruptivo A0 (160). – KeithS

+0

Sí, tienes razón, he entendido mal la pregunta. Lo siento. ¿Debo eliminar mi respuesta o simplemente dejarla aquí (soy nuevo en esto ...)? –

+0

Debe corregir su respuesta. Eso es lo mejor que puedes hacer. – jlafay

5

string.Replace does work. Sin usar RegEx:

stringVar = stringVar.Replace("\xA0", string.Empty); 
Cuestiones relacionadas