Построение асинхронной цепочки обратных вызовов `future` из графа зависимостей времени компиляции (DAG)

Кажется, что самый короткий способ состоит в объединении LINQ и string.Concat:

var input = @"My name @is ,Wan.;'; Wan";
var chrs = new[] {'@', ',', '.', ';', '\''};
var result = string.Concat(input.Where(c => !chrs.Contains(c)));
// => result = "My name is Wan Wan" 

См. демонстрацию C # . Обратите внимание, что string.Concat является ярлыком к string.Join("", ...).

Обратите внимание, что использование регулярного выражения для удаления отдельных известных символов по-прежнему можно динамически строить, хотя считается, что регулярное выражение работает медленнее. Тем не менее, вот способ создания такого динамического регулярного выражения (где все, что вам нужно, это класс символов):

var pattern = $"[{Regex.Escape(new string(chrs))}]+";
var result = Regex.Replace(input, pattern, string.Empty);

См. еще одну демонстрацию C # . Регулярное выражение будет выглядеть как [@,\.;']+ (сопоставление одного или нескольких (+) последовательных вхождений символов @, ,, ., ; или '), где точка не должна быть экранирована, но Regex.Escape будет необходимо, чтобы избежать других символов, которые должны быть экранированы, например \, ^, ] или -, чья позиция внутри класса символов, которую вы не можете предсказать .

30
задан Vittorio Romeo 3 March 2016 в 20:11
поделиться