2013-03-05 3 views
2

Я не знаю, как я должен быть, для Regex, так что это может показаться глупым вопросом.Использование Regex Replace вместо String Replace

Я разделяю string на string[] с .Split(' ').
Целью является проверка слов или их замена.

Проблема у меня в настоящее время, является то, что для слова быть заменяет, он должен быть точным соответствием, но с тем, как я раскалывают его, может быть ( или [ с разделенное слово.

До сих пор, чтобы противостоять этому, я использую что-то вроде этого:
.

Это работает отлично, но я хочу включить более специальные символы, такие как [;\\/:*?\"<>|&'].

Есть ли более быстрый способ, чем метод замены, например Regex? У меня такое чувство, что мой маршрут далек от лучшего ответа.

EDIT
This is an (example) string
будет заменен на
This is an (example) string

+0

Я не думаю, что я понимаю вопрос. Что вам нужно, чтобы эти специальные символы были заменены? Это поможет, если вы продемонстрируете примерную строку. –

+0

Если вы хотите извлечь все слова из строки, я думаю, это должен быть ответ на ваш вопрос: http://stackoverflow.com/q/2159026/1236044 – jbl

+0

@ Chirag64 извините - обновил его. – TheGeekZn

ответ

0

I вещь это правильно, что вы хотите

если вы хотите эти ->; \ /: *»< > & 'символы для замены

string input = "(exam;\\/:*?\"<>|&'ple)"; 
     Regex reg = new Regex("[;\\/:*?\"<>|&']"); 
     string result = reg.Replace(input, delegate(Match m) 
     { 
      return " " + m.Value + " "; 
     }); 

если вы хотите заменить все символы, кроме A-Za-z0-9_

string input = "(example)"; 
     Regex reg = new Regex(@"\W"); 
     string result = reg.Replace(input, delegate(Match m) 
     { 
      return " " + m.Value + " "; 
     }); 
3

Если вы хотите заменить целые слова, вы можете сделать это с помощью регулярного выражения, как это.

string text = "This is an example (example) noexample"; 
string newText = Regex.Replace(text, @"\bexample\b", "!foo!"); 

newText будет содержать "This an !foo! (!foo!) noexample"

Ключевым моментом здесь является то, что \b является метасимволом слово перерыв. Таким образом, он будет совпадать в начале или конце строки и переходы между символами слов (\ w) и не-словными символами (\ W). Самое большое различие между ним и использованием \ w или \ W заключается в том, что они не будут совпадать в начале или в конце строк.