2010-07-19 101 views
10

如果我有像下面的字符串...什麼是正則表達式來刪除(可選的)前導和尾隨雙引號?移除任何可選空格引號的外面:C#正則表達式:刪除前導和尾隨雙引號(「)

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

(用於使用Regex.Replace C#)

回答

3

替換^\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); 
+0

'@「^ \ s * \」?| \「?\ s * $」'在C#中是不可能的。在逐字字符串中使用''「'而不是'\」'作爲引號。你也不需要創建一個Regex的新實例,只需要使用Regex.Replace。 – 2010-07-19 14:13:16

+0

@Yuriy謝謝,更新 – Amarghosh 2010-07-19 14:14:22

1

我會用String.Trim方法來代替,但如果你想正則表達式,用這一個:

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

它矯枉過正使用Regex.Replace此。改爲使用Trim

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

如果你只是想去掉空格這是引號,保留任何這裏面:

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

我知道這不是太通常,但如果你的內部字符串以任何這些開始或結束,你也將修剪它們,例如,「Size 8」或「Size 8」「」'(如果它轉義雙引號)將最終結束'尺寸8'。 – Andrew 2017-12-08 00:08:17

9

除了使用正則表達式,你可以只使用String.Trim() - 更容易閱讀,理解和維護。

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

我創建了另一種模式的稍微修改版本,對我來說工作得很好。我希望這有助於將正常的命令行參數和作爲單個參數的雙引號字組分開。

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

我自己的使用: //吃第一個參數(因爲它的C#文件名) argsLine = new Regex(「(\」[^ \「] * \」「)[^ \」\\ s] +)。替換(argsLine,「」); 使用類似的正則表達式方法。 :-) – TarmoPikaro 2016-02-08 22:37:23

相關問題