我需要创建一个扩展方法来对我的字符串进行分析(分割)。用正则表达式解析C#扩展方法中的字符串
例如: 如果我有字符串
COMMAND 1处理过的 “JOB命令” 20160801 9时05分24秒
应当分裂这样
COMMAND
PROCESSED
“JOB命令”
9时05分24秒
其它示例。 如果我有字符串:
命令2错误06 00000032“消息窗口仍处于活动状态。” 20160801 9时05分24秒
应当分裂像这样:
COMMAND
ERROR
“消息窗口仍处于活动状态。”
20160801 9时05分24秒
我对这个解决方案。但我相信有更清洁的解决方案。
我的解决办法:
public static List<string> GetTokens(this string line)
{
// TODO: Code refactoring:
var res = new List<string>();
var parts = Regex.Split(line, "/[^\\s\"']+|\"([^\"]*)\"|'([^']*)'/g");
var subParts = parts[0].Split(' ');
foreach (var val in subParts)
{
res.Add(val);
}
res.Add(parts[1]);
subParts = parts[2].Split(' ');
foreach (var val in subParts)
{
res.Add(val);
}
res.RemoveAll(f => f.Trim() == "");
return res;
}
我想实现清晰的解决方案。有任何想法吗?
清洁或工作?这 - '“/ [^ \\ s \”'] + | \“([^ \”] *)\“|'([^'] *)'/ g”' - 显然不起作用。所以,你的输入没有转义序列,有吗? –