Регулярное выражение для замены специальных символов в строке пробелом? asp.net c#

#c# #asp.net #regex

#c# #asp.net #регулярное выражение

Вопрос:

 string inputString = "1/10 EP Sp'arrowha?wk XT R;TR 2.4GHz Red";
//Characters Collection: (';', '', '/', ':', '*', '?', ' " ', '<', '>', '|', 'amp;', ''')
string outputString = "1 10 EP Sp arrowha wk XT R TR 2.4GHz Red";
  

Комментарии:

1. Вы случайно не пытаетесь выполнить какое-то экранирование для SQL?

2. Я знаю, что опаздываю на вечеринку, но … это вопрос? С 9 голосами «за»? Боже милостивый!

Ответ №1:

Полное раскрытие следующего кода:

  • Это не тестировалось
  • Вероятно, я перепутал символ, экранирующий в new Regex(...) ;
  • На самом деле я не знаю C #, но могу поискать в Google "C# string replace regex" и перейти на MSDN

     Regex re = new Regex("[;\/:*?"<>|amp;']");
    string outputString = re.Replace(inputString, " ");
      

Вот правильный код:

 string inputString = "1/10 EP Sp'arrowha?wk XT R;TR 2.4GHz R\ed";
Regex re = new Regex("[;\\/:*?"<>|amp;']");
string outputString = re.Replace(inputString, " ");
// outputString is "1 10 EP Sp arrowha wk XT R TR 2.4GHz R ed"
  

Демонстрация: http://ideone.com/hrKdJ

Также: http://www.regular-expressions.info /

Комментарии:

1. Переместите ' внутрь класса char, также я бы использовал , например "[;\/:*?"<>|amp;'] "

2. @Мэтт Болл, я понимаю, что ты, вероятно, расстроен тем, что OP не погуглил первым, но это не значит, что ты должен быть злым или саркастичным.

3. @Xaisoft это подразумевалось как раскрытие информации, никакого негатива вообще не предполагалось. Я изменил его формулировку; пожалуйста, дайте мне знать, если оно все еще плохо работает.

4. @Мэтт Болл, все хорошо. Я не думал, что вы настроены негативно, я думал, вы расстроены тем, что люди хотя бы не пытаются перед публикацией.

5. Что, если бы я захотел заменить [и]?

Ответ №2:

 string outputString = Regex.Replace(inputString,"[;/:*?""<>|amp;']",String.Empty)
  

Ответ №3:

Вот Java-код для замены специальных символов

 String inputString = "1/10 EP Sp'arrowha?wk XT R;TR 2.4GHz R\ed";
String re = "[;\\/:*?"<>|amp;']";
Pattern pattern = Pattern.compile(re);
Matcher matcher = pattern.matcher(inputString);
String outputString = matcher.replaceAll(" ");