Member 13403058 Ответов: 3

Как удалить специальные символы из определенного слова предложения


Как я смогу удалить специальный символ, такой как Апостроф, из слова в предложении, например

вместо - - - - - привет "большой" мир

Я хочу, чтобы это было ---------- привет большой мир

Что я уже пробовал:

попробовал добавить такие слова


StringBuilder sb = new StringBuilder();
   foreach (char c in strMyString) {
      if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') | || (c >= 'a' && c <= 'z') ) {
         sb.Append(c);
      }
   }
   return sb.ToString();
}

Richard Deeming

Вы делаете это, чтобы попытаться избежать SQL-инъекция[^]?

Если это так, остановить Не пытайтесь отфильтровать "особые" символы. Вместо этого используйте параметры.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]

3 Ответов

Рейтинг:
2

Graeme_Grant

private readonly char[] validCharacters
    = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- ".ToCharArray();

public string StripCharacters(string input, char[] validChars)
{
    return input.ToCharArray()
                .Where(c => validChars.Contains(c))
                .Aggregate(new StringBuilder(), (current, next)
                    => current.Append(next), sb => sb.ToString());
}

Использовать:
var cleaned = StripCharacters("instead of ----- Hello 'big' world", validCharacters);

Выходы:
instead of ----- Hello big world

Это дает вам больший контроль над тем, какие символы держать, а какие раздевать.


Karthik_Mahalingam

5

Рейтинг:
0

OriginalGriff

Используйте регулярное выражение:

public static Regex removeSpecials = new Regex(
      "[^\w\s-]",
    RegexOptions.CultureInvariant
    | RegexOptions.Compiled
    );
...
    string result = removeSpecials.Replace(InputText,"");


[edit]добавлен пробел и дефис, 0-9a-zA-Z заменяется на \w-OriginalGriff [/edit]


Patrice T

Похоже, в регулярном выражении отсутствует пробел

OriginalGriff

Хорошая мысль! Исправлено.

Рейтинг:
0

Patrice T

На первый взгляд, вы забыли разрешить пробелы в фильтрации if.

(c == ' ')