2014-01-27 2 views
22

Я хотел бы заменить все специальные символы в строке comma (,).Как заменить весь специальный символ на строку с помощью C#

Для примера:

[email protected]&Hello(Hello) 

выход -

Hello,Hello,Hello,Hello, 

(я не знал, как использовать регулярное выражение в C#)

Могу ли я сделать эту работу с помощью регулярных выражений в C# ?

+2

Define "специальный" – David

+1

Определить 'особый характер'. –

+1

Каков ваш набор специальных символов для замены? – Steve

ответ

40

Да, вы можете использовать regular expressions в C#.

Using regular expressions with C#:

using System.Text.RegularExpressions; 

string your_String = "[email protected]&Hello(Hello)"; 
string my_String = Regex.Replace(your_String, @"[^0-9a-zA-Z]+", ","); 
+1

' Convert.ToString (your_String) 'eh? – tnw

+1

Да, нет необходимости использовать «Конвертировать». Спасибо @tnw –

+0

@tnw согласен, зачем вызывать 'Convert.ToString (your_string)' когда значение не является нулевым, и вы можете напрямую вызвать 'your_string.ToString()' –

7

Вы можете использовать обычный expresion, чтобы, например, заменить все не алфавитно-цифровые символы с запятыми:

s = Regex.Replace(s, "[^0-9A-Za-z]+", ","); 

Примечание: + после того, как набор будет сделать его заменить каждую группу не буквенно-цифровых символов с запятой , Если вы хотите заменить каждого символа запятой, просто удалите +.

+3

Почему downvote? Если вы не объясните, что это такое, что вы считаете неправильным, оно не может улучшить ответ. – Guffa

+0

Я не понимаю, почему ответ затушевывается, поскольку другой одобренный (также принятый) ответ говорит то же самое. Но я могу ответить только один раз. –

+0

что делать, если я хочу разрешить дефис? будет ли эта работа s = Regex.Replace (s, "[^ 0-9A-Za-z -] +", ","); –

9

Предположим, вы хотите заменить символы, которые не являются цифры или буквы (и _ символ, как @Guffa правильно указал):

string input = "[email protected]&Hello(Hello)"; 
string result = Regex.Replace(input, @"[^\w\d]", ","); 
// Hello,Hello,Hello,Hello, 

Вы можете добавить еще символы, которые не должны быть заменены. Например. если вы хотите, чтобы символы пробела оставались, то просто добавьте \s в шаблон: \[^\w\d\s]

+3

'\ w' не соответствует только буквам, он также соответствует' _'. – Guffa

+1

@ Guffa спасибо, хорошая заметка. Если _ считается специальным символом, тогда 'a-zA-Z' более подходит –

3

Кроме того, это может быть сделано с LINQ

var str = "[email protected]&Hello(Hello)"; 
var characters = str.Select(c => 
     { 
      if (!char.IsLetter(c)) return ','; 
      return c; 
     }).ToArray(); 

    var output = new string(characters); 
    Console.WriteLine(output); 
Смежные вопросы