Регулярное выражение C #: удаление начальных и конечных двойных кавычек (") - PullRequest
10 голосов
/ 19 июля 2010

Если у меня есть строка, подобная приведенной ниже ... каково регулярное выражение для удаления (необязательных) начальных и конечных двойных кавычек? Для дополнительного кредита, он может также удалить любые дополнительные пробелы за пределами кавычек:

string input = "\"quoted string\""   -> quoted string
string inputWithWhiteSpace = "  \"quoted string\"    "  => quoted string

(для C # с использованием Regex.Replace)

Ответы [ 5 ]

32 голосов
/ 19 июля 2010

Использовать Regex.Replace для этого излишне.Вместо этого используйте Trim.

string output = input.Trim(' ', '\t', '\n', '\v', '\f', '\r', '"');

И если вы хотите удалить только пробелы, которые вне кавычек, оставив все, что внутри:

string output = input.Trim().Trim('"');
9 голосов
/ 19 июля 2010

Помимо использования регулярного выражения, вы можете просто использовать String.Trim() - намного проще для чтения, понимания и обслуживания.

var result = input.Trim('"', ' ', '\t');
3 голосов
/ 19 июля 2010

Замените ^\s*"?|"?\s*$ пустой строкой.

В C # регулярное выражение будет:

string input = "  \"quoted string\"    "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);
1 голос
/ 16 июня 2012

Я создал слегка модифицированную версию другого паттерна, которая мне подходит.Я надеюсь, что это поможет разделить обычные параметры командной строки и наборы слов в двойных кавычках, которые действуют как один параметр.

String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";
1 голос
/ 19 июля 2010

Я бы вместо этого использовал метод String.Trim, но если вы хотите регулярное выражение, используйте этот:

@"^(\s|")+|(\s|")+$"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...