解析已知格式字符串的最有效方法

时间:2012-12-24 07:45:15

标签: c# .net string parsing

我有一个字符串,其格式如下:

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

所以我知道该字符串格式总是有3个参数(可变长度)。

解析字符串的最有效方法是什么? (也许是最短的代码,所以我必须运行一些测试)

感谢。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

第一个解决方案:我认为这是最简单的   - 剪切[和](第一个和最后一个字符)   - 按“,”拆分 - &gt; trim() - &gt;得到3个部分   - 删除多余的字符(例如“{和}”) 如果您确定所需的字符串不包含“{} - &gt;您可以在拆分前将其删除。

第二个解决方案:使用正则表达式

答案 2 :(得分:0)

示例:提取 - &gt;你好吗?

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

现在变量答案包含三个单词!