C# Regular Expression: Remove leading and trailing

2020-07-03 06:19发布

If I have a string like below... 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)

标签: c# regex
5条回答
唯我独甜
2楼-- · 2020-07-03 06:59

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('"');
查看更多
混吃等死
3楼-- · 2020-07-03 07:01

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

@"^(\s|")+|(\s|")+$"
查看更多
smile是对你的礼貌
4楼-- · 2020-07-03 07:03

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+|$)";
查看更多
疯言疯语
5楼-- · 2020-07-03 07:16

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

var result = input.Trim('"', ' ', '\t');
查看更多
做自己的国王
6楼-- · 2020-07-03 07:20

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);
查看更多
登录 后发表回答