我有一个试图解析的文件,用这种格式写的:
command -l KEY "VALUE"
我的目标是获取KEY和VALUE,它位于双引号内。
每一行都以相同的command -l
开头。现在,我这样做是一种相当低效的方式。我正在获取一个子字符串,删除前11个字符,删除空格后的所有内容,然后使用带引号的字符获取另一个子字符串。
当然必须有更好的方法来做到这一点,我认为REGEX就是那个解决方案。我一直在这里关注这个页面,但完全迷失了: https://msdn.microsoft.com/en-us/library/ms174214.aspx
非常感谢任何建议。
答案 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)
周围有很多,然后你不必担心处理所有错误或特殊情况。