2012-12-24 85 views
0

我有一個字符串,其是在例如以下格式:最有效的方法來分析一個已知的格式串

[ "{0}", "{1}", "{2}" ] 

所以我知道有總是在該字符串格式3個參數(可變長度)。

什麼是解析字符串的最有效方法? (也許最短的代碼,所以我必須運行一些測試)

謝謝。

+0

解析...你的意思是循環和訪問sring元素? – sajanyamaha

+0

你到目前爲止嘗試過什麼?你想讓別人爲你做這份工作嗎? – alzaimar

+0

你期望輸出什麼? – Amit

回答

0

它可以用很多方式完成,使用Regex類或字符串方法。

下面是它可以使用Regex.Match來完成:

 string s = @"[ ""some test"", ""another test string"", ""hi there!"" ]"; 
     string[] vars = Regex.Matches(s, @"""([^""]*)""") 
      .Cast<Match>() 
      .Select(m => m.Groups[1].Value) 
      .ToArray(); 

的另一種方法,使用Regex.Split

 vars = Regex.Split(s.Remove(s.Length - 3, 3).Remove(0, 3), @""",\s"""); 

這裏是字符串方法做這件事的一種方法:

 vars = s.Substring(s.IndexOf("\"") + 1, s.LastIndexOf("\"") - 3) 
        .Split(new string[] {@""", """}, StringSplitOptions.None); 
+0

這是更快或最簡單的答案嗎? (或兩者兼而有之?) – Cheetah

+0

這是使用'Regex'類的一種可能的方式,與其他方式相比,OP要測試效率和速度。 –

0

第一個解決方案:我認爲這是最簡單的 - 剪切[和](第一個和最後一個字符) - 按「,」拆分 - > trim() - >獲取3個零件 - 刪除多餘字符(如「{和}」) 如果您確定您的預期字符串不包含「{} - >您可以在拆分之前刪除它們。

第二種解決方案:使用正則表達式

0

示例:Extract - >你好嗎?

string stuff = @"""{How}"", ""{Are}"", ""{You?}"""; 
string[] answer = (stuff.Replace(@"""{", String.Empty).Replace(@"}""", String.Empty)).Split(','); 

現在變量答案包含三個詞!

相關問題