Necesitamos una función C# que elimine todos los caracteres especiales de una cadena.Regex eliminar caracteres especiales
Además, ¿es posible cambiar "George's" por "George" (eliminar tanto comillas simples como caracteres)?
Necesitamos una función C# que elimine todos los caracteres especiales de una cadena.Regex eliminar caracteres especiales
Además, ¿es posible cambiar "George's" por "George" (eliminar tanto comillas simples como caracteres)?
Este método eliminará todo excepto letras, números y espacios. Además, eliminará cualquier "o 'seguido de la letra s.
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex("(?:[^a-z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
Hola Ryan, gracias por el código. Está funcionando bien. ¿Es posible ignorar el espacio en blanco? Quiero que el espacio en blanco esté allí. Gracias. – user374760
Si esta es la respuesta, no olvide marcarla como tal. –
Hola Ryan, No queremos eliminar los espacios en blanco de la cadena. Por favor, hágame saber cómo hacerlo. Lo marqué como una solución. Gracias. – user374760
Ayudaría si supiéramos que personaje especial era. Aquí está una función a pesar de que va a hacer el truco
public bool IsSpecialChar(char c) {
// Need you to fill this out
}
public string RemoveSpecialChars(string s) {
var builder = new System.Text.StringBuilder();
foreach (var cur in s) {
if (!IsSpecialChar(cur)) {
builder.Append(cur);
}
}
return builder.ToString();
}
Su mejor definir una lista de caracteres que desea conservar en lugar de enumerar todos los demás que no quieres. Por ejemplo, el uso de perlregexes s/[^A-Za-z0-9]+//g
eliminará cualquier carácter que no sea de palabra (lo siento, no estoy familiarizado con las expresiones regulares de C#: D).
Para su otro problema, podría definir qué eliminar según la palabra anterior si le importan ciertos casos (como eliminar solo 's
si hay una palabra antes), de lo contrario, simplemente elimine todas las ocurrencias de 's
.
Creo que querías decir' s/\ W + // g' ('tr ///' no tiene potencia regex, y el conjunto de "palabra" caracteres "incluye mucho más que simplemente' [A-Za-z0-9] '). La versión de C# sería' Regex.Replace (input, @ "\ W +", String.Empty) '. –
@Alan Moore usted tienen razón, me olvido de eso =). Regardi ng personajes de palabras, soy consciente de eso, de hecho pensé que eso era lo que él quería. – javs
Sí, eché un poco sobre los personajes de palabras para salvarnos a ambos de regañarles. : D –
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex(
"(?:[^a-zA-Z0-9 ]|(?<=['\"])s)",
RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
respuesta de Ryan es correcto. Sólo tiene que añadir A-Z
, así como muchas personas que necesitarían.
Al menos definir' carácter especial " – BoltClock
quieres decir: eliminar todo lo que no es letra, número o espacio? –