从字符串中解析键值

时间:2016-10-16 02:30:08

标签: c# .net regex windows

我有一个试图解析的文件,用这种格式写的:

command -l KEY "VALUE"

我的目标是获取KEY和VALUE,它位于双引号内。

每一行都以相同的command -l开头。现在,我这样做是一种相当低效的方式。我正在获取一个子字符串,删除前11个字符,删除空格后的所有内容,然后使用带引号的字符获取另一个子字符串。

当然必须有更好的方法来做到这一点,我认为REGEX就是那个解决方案。我一直在这里关注这个页面,但完全迷失了: https://msdn.microsoft.com/en-us/library/ms174214.aspx

非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

对于像这样的简单字符串解析练习,正则表达式比手动获取子字符串然后调用string.Split(" ")要好得多。例如:

public KeyValuePair<string, string> Parse(string input) {
    var split = input.Substring(11).Split(' ');
    return new KeyValuePair<string, string>(split[0], split[1].Replace("\"",""));
}

答案 1 :(得分:1)

我会使用nuget提供的命令行解析器包(如https://www.nuget.org/packages/CommandLineParser/1.9.71

周围有很多,然后你不必担心处理所有错误或特殊情况。