除了用双引号括起来之外,在逗号(,)上拆分的正则表达式是什么?例如:
max,emily,john = ["max", "emily", "john"]
Run Code Online (Sandbox Code Playgroud)
但
max,"emily,kate",john = ["max", "emily,kate", "john"]
Run Code Online (Sandbox Code Playgroud)
希望在C#中使用: Regex.Split(string, "PATTERN-HERE");
谢谢.
cdh*_*wie 14
像这样的情况通常需要除正则表达式之外的其他东西.它们很漂亮,但处理这种事情的模式比它们有用的更复杂.
您可以尝试这样的事情:
public static IEnumerable<string> SplitCSV(string csvString)
{
var sb = new StringBuilder();
bool quoted = false;
foreach (char c in csvString) {
if (quoted) {
if (c == '"')
quoted = false;
else
sb.Append(c);
} else {
if (c == '"') {
quoted = true;
} else if (c == ',') {
yield return sb.ToString();
sb.Length = 0;
} else {
sb.Append(c);
}
}
}
if (quoted)
throw new ArgumentException("csvString", "Unterminated quotation mark.");
yield return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
可能需要一些调整才能完全遵循CSV规范,但基本逻辑是合理的.
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |