С# Регулярное выражение: удалить предыдущие и завершающие двойные кавычки (")
Если у меня есть строка, как показано ниже... что такое регулярное выражение для удаления (необязательных) ведущих и завершающих двойных кавычек? Для дополнительного кредита он также может удалить любое дополнительное пространство вне кавычек:
string input = "\"quoted string\"" -> quoted string
string inputWithWhiteSpace = " \"quoted string\" " => quoted string
(для С# с использованием Regex.Replace)
Ответы
Ответ 1
Это излишне использовать Regex.Replace
для этого. Вместо этого используйте Trim
.
string output = input.Trim(' ', '\t', '\n', '\v', '\f', '\r', '"');
И если вы хотите удалить только пробелы вне кавычек, сохранив все, что внутри:
string output = input.Trim().Trim('"');
Ответ 2
Помимо использования регулярного выражения, вы можете просто использовать String.Trim()
- гораздо проще читать, понимать и поддерживать.
var result = input.Trim('"', ' ', '\t');
Ответ 3
Замените ^\s*"?|"?\s*$
пустой строкой.
В С# регулярное выражение будет:
string input = " \"quoted string\" "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);
Ответ 4
Вместо этого я бы использовал метод String.Trim, но если вы хотите регулярное выражение, используйте его:
@"^(\s|")+|(\s|")+$"
Ответ 5
Я создал слегка модифицированную версию другого шаблона, который очень хорошо работает для меня. Надеюсь, это поможет отделить обычные параметры командной строки и двойные кавычки слов, которые действуют как один параметр.
String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";