2009-07-16 23 views
21

Sé exactamente poco sobre expresiones regulares y pensé que esta era una oportunidad tan buena como cualquiera para aprender al menos lo más básico de lo básico.¿Cómo se hace el reemplazo de cadenas insensibles a mayúsculas/minúsculas con expresiones regulares?

¿Cómo hago esta sustitución de cadena insensible a mayúsculas/minúsculas en C# usando una expresión regular?

myString.Replace("/kg", "").Replace("/KG", ""); 

(Tenga en cuenta que el '/' es un literal.)

Respuesta

60

que puede utilizar:

myString = Regex.Replace(myString, "/kg", "", RegexOptions.IgnoreCase); 

Si vas a hacer esto muchas veces, se puede hacer :

// You can reuse this object 
Regex regex = new Regex("/kg", RegexOptions.IgnoreCase); 
myString = regex.Replace(myString, ""); 

Usando (?i:/kg) haría sólo un poco de un larg La expresión regular es insensible a las mayúsculas y minúsculas. Personalmente prefiero usar RegexOptions para que una opción afecte a todo el patrón.

MSDN tiene pretty reasonable documentation de expresiones regulares .NET.

+0

¡Me ganaste! :) –

+0

Olvidaste el colon: (? I:/kg) –

+0

@ Alan: gracias, arreglado ahora. –

0

Depende de lo que desee lograr. Supongo que quieres eliminar una secuencia de caracteres después de una barra inclinada.

string replaced = Regex.Replace(input,"/[a-zA-Z]+",""); 

o

string replaced = Regex.Replace(input,"/[a-z]+","",RegexOptions.IgnoreCase); 
2

"/ [kK] [gG]" o "(i:?/Kg)" coincidirá para usted.

declara un nuevo objeto regex, pasando uno de ellos como contenido. Luego ejecute regex.replace.

0
Regex regex = new Regex(@"/kg", RegexOptions.IgnoreCase); 
    regex.Replace(input, ""); 
+0

ver Jon Skeet a continuación, publicó primero –

+1

No hay necesidad de @ cuando solo hay * barras delanteras *. –

+0

Sí, utilicé nregex.com para crear la primera línea del ejemplo. usan @ independientemente del patrón –

4

De esta manera:

myString = Regex.Replace(myString, "/[Kk][Gg]", String.Empty); 

Tenga en cuenta que también se encargará de las combinaciones/kg y/Kg, lo que hace mucho más que su ejemplo sustitución de cadenas.

Si sólo desea manejar las combinaciones/kg específica y/KG:

myString = Regex.Replace(myString, "/(?:kg|KG)", String.Empty); 
+0

¿Por qué el voto a favor? Si no explica lo que piensa que está mal, no puede mejorar la respuesta. – Guffa

0

Here es un ejemplo utilizando la función Regex.replace.

Cuestiones relacionadas