2011-06-16 56 views
41

Tengo una cadena como esta:Como reemplazar un caracter en cadena con un carácter vacío en C# .NET

string val = "123-12-1234"; 

¿Cómo puedo reemplazar los guiones utilizando una cadena vacía en C#.

quiero decir val.Replace(char oldChar, newChar);

Lo que tiene que ir en oldChar y newChar.

+3

string val = "123-12-1234" .Replace ("-", String.Empty); // Nota: al menos intente resolver un problema antes de publicar dichas preguntas. –

+6

¿Por qué el voto a favor? Puede ser una pregunta simple de responder, pero eso no lo hace mal seguramente? Los nuevos usuarios pueden desanimarse rápidamente ... –

+4

Estoy de acuerdo con Peter Kelly: votando – Nick

Respuesta

57

Puede usar una sobrecarga diferente de Replace() que toma una cadena.

val = val.Replace("-", string.Empty) 
+0

+1 por mencionar que el método alternativo es una "sobrecarga" – Nick

+0

Gracias, eso funcionó. – SaiBand

+0

¡Intenta reemplazar el carácter \ 0 usando la sobrecarga anterior y no funcionará! El caracter \ 0 no será reemplazado. Esto es especialmente cierto cuando se trabaja con datos de cadena recibidos de los dispositivos Snmp –

5

Esto parece demasiado simple, pero:

val.Replace("-",""); 
+0

Sí, lo tengo, ¡gracias! – SaiBand

4
string val = "123-12-1234"; 

val = val.Replace("-", ""); // result: 123121234 
+0

Sí, acabo de comprobar los resultados. Eso funcionó para mí – SaiBand

29

Dado que las otras respuestas aquí, aunque correcta, no abordan explícitamente sus dudas iniciales, Lo haré.

Si llama al string.Replace(char oldChar, char newChar), reemplazará las apariciones de un carácter con otro carácter. Es un reemplazo uno a uno. Debido a esto, la longitud de la cadena resultante será la misma.

Lo que quiere es eliminar los guiones, que, obviamente, no es lo mismo que reemplazarlos por otro carácter. No puede reemplazarlo por "sin carácter" porque 1 carácter es siempre 1 carácter. Es por eso que necesita usar la sobrecarga que toma cadenas: las cadenas pueden tener diferentes longitudes. Si reemplaza una cadena de longitud 1, con una cadena de longitud 0, el efecto es que los guiones desaparecen, reemplazados por "nada".

+2

Gracias por dar una explicación detallada. – SaiBand

+1

Después de todo eso, no se demostró. : P Oh, bueno. +1 de todos modos para la explicación – cHao

+0

Puede encontrar más información [aquí] (http://stackoverflow.com/a/3670660/3136474). – Dinei

0

Si se encuentra en un bucle, digamos que recorrer una lista de caracteres de puntuación que desea eliminar, se puede hacer algo como esto:

 private const string PunctuationChars = ".,!?$"; 
      foreach (var word in words) 
       { 
        var word_modified = word; 

        var modified = false; 

        foreach (var punctuationChar in PunctuationChars) 
        { 
         if (word.IndexOf(punctuationChar) > 0) 
         { 
          modified = true; 
          word_modified = word_modified.Replace("" + punctuationChar, ""); 


         } 
        } 
       //////////MORE CODE 
       } 

El truco es el siguiente:

word_modified.Replace("" + punctuationChar, ""); 
1

Si desea reemplazar un char en una cadena con un carácter vacío que significa que desea eliminar ese carácter de una cadena, lea la respuesta de R. Martinho Fernandes.

Aquí es un exemple de cómo quitar un char de una cadena (sustituir con un "char vacío"):

public static string RemoveCharFromString(string input, char charItem) 
    { 
     int indexOfChar = input.IndexOf(charItem); 
     if (indexOfChar >= 0) 
     { 
      input = input.Remove(indexOfChar, 1); 
     } 
     return input; 
    } 

o esta versión que elimina todas las recidivas de un caracter en una cadena:

public static string RemoveCharFromString(string input, char charItem) 
    { 
     int indexOfChar = input.IndexOf(charItem); 
     if (indexOfChar < 0) 
     { 
      return input; 
     } 
     return RemoveCharFromString(input.Remove(indexOfChar, 1), charItem); 
    } 
Cuestiones relacionadas