2010-05-05 26 views
11

Por ejemplo, tengo código debajo de string txt = "Tengo cadenas como Oeste, Oeste, Oeste y Oeste".¿Puedo usar expresiones regulares con String.Replace en C#?

Me gustaría reemplazar la palabra oeste u oeste con alguna otra palabra. Pero me gustaría no reemplazar West en Western.

  1. ¿Puedo usar la expresión regular en string.replace? Usé inputText.Replace("(\\sWest.\\s)",temp); No funciona.

Respuesta

17

Para sustituir la palabra completa (no como parte de la palabra):

string s = Regex.Replace(s, @"\bwest\b", "something"); 
+0

Se ve bien, pero esto va a ignorar al oeste y al oeste ¿Y es insensible a las mayúsculas y minúsculas? –

+0

Creo que hace lo mismo que ya estoy haciendo Usando 's = s.Replace ("Oeste", "algo");' –

+0

Funciona como una cadena s = Regex.Replace (s, @ "(\ bwest \ b)", "something") ;. Y funciona para el oeste. y al oeste y al oeste; también. Realmente no entiendo por qué :) –

5

¿Has mirado en Regex.Replace? Además, asegúrese de capturar el valor de retorno; Replace (a través de cualquier mecanismo de cadena) devuelve una cadena nueva - no realiza una sustitución in situ.

3

Pruebe usar la clase System.Text.RegularExpressions.Regex. Tiene un método estático Replace. No soy bueno con expresiones regulares, pero algo como

string outputText = Regex.Replace(inputText, "(\\sWest.\\s)", temp); 

debería funcionar, si su expresión regular es correcta.

0

utilizar este código si usted quiere que sea sensible a mayúsculas

string pattern = @"\bwest\b"; 
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase); 
0

Estoy de acuerdo con solución de Robert Harvey, excepto por una pequeña modificación:

s = Regex.Replace(s, @"\bwest\b", "something", RegexOptions.IgnoreCase); 

Esto reemplazará tanto "Oeste" y " oeste "con su nueva palabra

0

Inserte la expresión regular en el código antes de la clase

using System.Text.RegularExpressions; 

a continuación es el código de cadena de reemplazar el uso de expresiones regulares

string input = "Dot > Not Perls"; 
// Use Regex.Replace to replace the pattern in the input. 
string output = Regex.Replace(input, "some string", ">"); 

fuente: http://www.dotnetperls.com/regex-replace

18

respuesta a la pregunta es NO - no se puede utilizar expresiones regulares en String.Replace.

Si desea usar una expresión regular, debe usar la clase Regex, como todos declararon en sus respuestas.

+3

+1 única respuesta que responde directamente a la pregunta si puede usar String.Replace también para expresiones regulares – drkthng

-1

clase Regex es estático, cuando utiliza el método Reemplazar (Regex.Replace).

public static class Extension 
{ 
     public static string ReplaceValue(string data,string criteria) 
     { 
       return s = Regex.Replace(s, @"\bwest\b", "something"); 
     } 
} 
+0

Esto parece una pregunta. Haga * como una pregunta. * Además, publicó esta no respuesta a una pregunta formulada, y respondió, hace 6 años. –

0

En Java, String#replace acepta cadenas en formato de expresiones regulares pero C# puede hacer esto también el uso de extensiones:

public static string ReplaceX(this string text, string regex, string replacement) { 
    return Regex.Replace(text, regex, replacement); 
} 

y utilizarlo como:

var text = "  space   more spaces "; 
text.Trim().ReplaceX(@"\s+", " "); // "space more spaces" 
Cuestiones relacionadas