繁体   English   中英

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

[英]Most efficient way to parse a known format string

我有一个以下格式的字符串,例如:

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

因此,我知道该字符串格式中始终有3个(可变长度)参数。

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

谢谢。

可以使用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);

第一个解决方案:我认为这是最简单的-剪切[和](第一个和最后一个字符)-用“,”分割-> trim()->分成3个部分-删除多余的字符(例如“ {和}”)确保您期望的字符串不包含“ {}->您可以在拆分之前将其删除。

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

示例:提取->您好吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM