开发者

C# Regular Expression: Remove leading and trailing double quotes (")

If I have a string like b开发者_如何学Goelow... what is the regular expression to remove the (optional) leading and trailing double quotes? For extra credit, can it also remove any optional white space outside of the quotes:

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

(for C# using Regex.Replace)


It's overkill to use Regex.Replace for this. Use Trim instead.

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

And if you only want to remove whitespace that's outside the quotes, retaining any that's inside:

string output = input.Trim().Trim('"');


Besides using a regular expression you can just use String.Trim() - much easier to read, understand, and maintain.

var result = input.Trim('"', ' ', '\t');


Replace ^\s*"?|"?\s*$ with an empty string.

In C#, the regex would be:

string input = "  \"quoted string\"    "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);


I would use String.Trim method instead, but if you want regex, use this one:

@"^(\s|")+|(\s|")+$"


I created a slightly modified version of another pattern that works pretty well for me. I hope this helps for separating normal command-line parameters and double-quoted sets of words that act as a single parameter.

String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";


My 2c, as I couldn't find what I was looking for. This verion removes the first pair of quotes and spaces on each side of them.

        public static string RemoveQuotes(string text)
        {
            var regex = new Regex(@"^\s*\""\s*(.*?)\s*\""\s*$");
            var match = regex.Match(text);
            if (match.Success && match.Groups.Count == 2)
            {
                return match.Groups[1].Value;
            }
            return text;
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜