remove - regex replace pattern c#
Alternativa a String.Replace (5)
s/[!@#$%^*_+=/]/ /
Sería la expresión regular para él ... en c # deberías poder usar
Regex.Replace(yourstring, "[!@#$%^*_+=/]", "" );
Aunque mi C # está oxidado ...
Así que estaba escribiendo un código hoy que básicamente se ve así:
string returnString = s.Replace("!", " ")
.Replace("@", " ")
.Replace("#", " ")
.Replace("$", " ")
.Replace("%", " ")
.Replace("^", " ")
.Replace("*", " ")
.Replace("_", " ")
.Replace("+", " ")
.Replace("=", " ")
.Replace("/", " ")
Lo cual no es realmente agradable. Me preguntaba si hay una expresión regular o algo que podría escribir que reemplazaría todas las llamadas a la función Reemplazar ().
FYI - si necesita modificar esta expresión regular, deberá comprender el lenguaje de expresiones regulares. Es bastante simple, y como desarrollador realmente se debe a usted mismo agregar expresiones regulares a su caja de herramientas; no las necesita todos los días, pero si puede aplicarlas adecuadamente cuando sea necesario cuando surja la necesidad, le devolverán el dinero. diez veces para el esfuerzo inicial. Aquí hay un enlace a un sitio web con algunos tutoriales de primer nivel, fáciles de seguir y material de referencia sobre expresiones regulares: regular-expressions.info . Una vez que tenga una idea de las expresiones regulares y quiera usarlas en su software, querrá comprar Regex Buddy. Es una herramienta barata y extraordinaria para aprender y usar expresiones regulares. Raramente compro herramientas de desarrollo, pero esta valió cada centavo. Está aquí: Regex Buddy
Puede usar Regex.Replace () . Todos los caracteres se pueden colocar entre corchetes, que coinciden con cualquier carácter entre los corchetes. Algunos caracteres especiales tienen que ser escapados con barras diagonales inversas, y yo uso una cadena @verbatim aquí, así que no tengo que escabullirlos para el compilador C #. El primer parámetro es la cadena de entrada y el último parámetro es la cadena de reemplazo.
var returnString = Regex.Replace(s,@"[!@#/$%/^*_/+=//]"," ");
Si no le interesa profundizar en Regex, aquí hay un par de otras posibilidades de métodos de extensión.
Puede pasar los caracteres específicos que desea reemplazar:
static public string ReplaceCharsWithSpace(this string original, string chars)
{
var result = new StringBuilder();
foreach (var ch in original)
{
result.Append(chars.Contains(ch) ? '' '' : ch);
}
return result.ToString();
}
O bien, si sabe que desea mantener o solo eliminar tipos específicos de caracteres, puede usar los diversos métodos en caracteres, como IsLetter
, IsDigit
, IsPunctuation
e IsSymbol
:
static public string ReplaceNonLetterCharsWithSpace(this string original)
{
var result = new StringBuilder();
foreach (var ch in original)
{
result.Append(char.IsLetter(ch) ? ch : '' '');
}
return result.ToString();
}
Así es como usarías cada una de estas posibilidades:
string s = "ab!2c";
s = s.ReplaceCharsWithSpace(@"!@#$%^*_+=/"); // s contains "ab c"
string t = "ab3*c";
t = t.ReplaceNonLetterCharsWithSpace(); // t contains "ab c"
Tal vez puede reducir esto a un par de líneas, si lo desea, usando una expresión Lambda y List<>, ForEach
using System.Collections.Generic;
namespace ReplaceWithSpace
{
class Program
{
static void Main(string[] args)
{
string someString = "#1, 1+1=2 $string$!";
var charsToRemove = new List<char>(@"!@#$%^*_+=/");
charsToRemove.ForEach(c => someString = someString.Replace(c, '' ''));
System.Diagnostics.Debug.Print(someString); //" 1, 1 1 2 string "
}
}
}