Как заменить несколько разных символов пробелами? - PullRequest
0 голосов
/ 27 октября 2009

Как заменить разные / множественные символы пробелами для каждого экземпляра символа?

заменяемых символа: \ / : * ? < > |

Ответы [ 6 ]

8 голосов
/ 27 октября 2009

Этого можно добиться с помощью string.Split и string.Join:

string myString = string.Join(" ", input.Split(@"\/:*?<>|".ToCharArray())); 

Из любопытства проверили это на производительность, и это значительно быстрее, чем подход Regex.

3 голосов
/ 27 октября 2009
Regex.Replace(@"my \ special / : string", @"[\\/:*?<>|]", " ");

Я могу ошибаться в некоторых побегах ...: /

1 голос
/ 27 октября 2009

System.Text.RegularExpressions.Regex.Replace(input, @"[\\/:*?<>|]", " ")

0 голосов
/ 27 октября 2009

Вы можете сделать это, используя Regex

static void Main(string[] args)       
{        
    string myStr = @"\ / : * ? < > |";
    Regex myRegex = new Regex(@"\\|\/|\:|\*|\?|\<|\>|\|");
    string replaced = myRegex.Replace(myStr, new MatchEvaluator(OnMatch));
    Console.WriteLine(replaced);    
}

private static string OnMatch(Match match)
{
    return " ";
}
0 голосов
/ 27 октября 2009

Вот скомпилированный кусок кода:

// input
string input = @"my \ ?? spe<<||>>cial / : string";

// regex
string test = Regex.Replace(input, @"[\\/:*?<>|]", " ");

// test now contains "my      spe      cial     string"

Примечание: этот пост является исправлением исходного кода JustLoren, он не полностью мой.

0 голосов
/ 27 октября 2009

Посмотрите на методы String API в C #.

String.replace сработает, если вы позвоните ему семь раз.
Или String.indexOfAny в цикле, используя String.remove и String.insert.

Идем эффективными строками кода, Regexp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...