Вы можете добавить еще один символ, который нельзя заменить. Например. если вам нужны символы пробела, то просто добавьте \s в шаблон: \[^\w\d\s]
Ответ 3
Вы можете использовать регулярное выражение, например, для замены всех несимвольных символов запятыми:
s = Regex.Replace(s, "[^0-9A-Za-z]+", ",");
Примечание. + после набора заставит его заменить каждую группу не буквенно-цифровых символов запятой. Если вы хотите заменить каждый символ запятой, просто удалите +.
Ответ 4
Кроме того, это можно сделать с помощью 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);