如何将逗号分隔的字符串与也可以包含逗号的带引号的字符串分开?
输入示例:
John, Doe, "Sid, Nency", Smith
预期输出:
- 约翰
- 美国能源部
- 南希·希德
- 史密斯
用逗号分隔是可以的,但我要求允许使用“Sid,Nency”之类的字符串。我尝试使用正则表达式来分割这些值。正则表达式 ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"
来自 Java 问题,它不起作用对我的 .NET 代码很有用。它可以将一些字符串加倍,找到额外的结果等。
那么分割这些字符串的最佳方法是什么?
最佳答案
这是因为捕获组。只需将其变成非捕获组即可:
",(?=(?:[^""]*""[^""]*"")*[^""]*$)"
^^
捕获组将捕获的部分包含在您的结果中。
var regexObj = new Regex(@",(?=(?:[^""]*""[^""]*"")*[^""]*$)");
regexObj.Split(input).Select(s => s.Trim('\"', ' ')).ForEach(Console.WriteLine);
然后修剪结果。
关于C# 分割逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701179/