Как заменить различные/множественные символы пробелом для каждого экземпляра символа?Как заменить несколько разных символов на пробел?
символы, которые будут заменены в \/: * ? < > |
Как заменить различные/множественные символы пробелом для каждого экземпляра символа?Как заменить несколько разных символов на пробел?
символы, которые будут заменены в \/: * ? < > |
Вы можете добиться этого с String.split и string.join:
string myString = string.Join(" ", input.Split(@"\/:*?<>|".ToCharArray()));
Из любопытства проверил это для работы, и это значительно быстрее, чем подход Regex.
System.Text.RegularExpressions.Regex.Replace(input, @"[\\/:*?<>|]", " ")
на самом деле я думаю, что вы имеете в виду. @ "[\\ /: * \? \ <\> \ |]", потому что многие из этих символов являются управляющими символами Reg Ex. –
Управляющие символы регулярных выражений не являются символами управления регулярным выражением внутри символьного класса, за исключением '-',' ['и' \\ '. – Abel
и ']' конечно ... – Abel
Regex.Replace(@"my \ special/: string", @"[\\/:*?<>|]", " ");
я, возможно, некоторые из побегов не так ...:/
Нет. Я думаю, что у вас есть они правильные. –
К сожалению, они ошибаются и не собираются. Я думаю, вы имеете в виду это: 'Regex.Replace (@" my \ ?? special /: string ", @" [\\ /: \ *? <> |] "," ");' (Обратите внимание, что '\? 'и т. д. разрешено, но не обязательно в классе символов) – Abel
@Abel благодарит за разъяснения. – JustLoren
Посмотрите на String API methods in C#.
string.replace будет работать, если вы назвали его семь раз.
Или String.indexOfAny в цикле, используя String.remove и String.insert.
Выполнение эффективных строк кода, регулярное выражение.
Вот компилируемый фрагмент кода:
// input
string input = @"my \ ?? spe<<||>>cial/: string";
// regex
string test = Regex.Replace(input, @"[\\/:*?<>|]", " ");
// test now contains "my spe cial string"
Примечание: этот пост является исправление исходного кода JustLoren, это не совсем мое.
Вы можете сделать это с помощью 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 " ";
}
при отправке кода, отступьте его четырьмя пробелами (или нажмите кнопку «Код»), чтобы получить он правильно окрашен и выложен. – Abel
+1 за оригинальность и подход, с которым я начинал, но не заключал (и для показа мне «string.Join' вместо' Split (..). Join() ') :) – Abel
забавная вещь об этом ответе что в зависимости от того, с которым вы более знакомы, это может быть более/менее читаемым, чем RegEx. Но для меня RegEx более читабельна. –
согласился, +1 за оригинальность – JustLoren