gpt4 book ai didi

c# - 正则表达式以逗号分割,除非被引用

转载 作者:太空狗 更新时间:2023-10-29 20:57:30 28 4
gpt4 key购买 nike

除非用双引号括起来,否则用逗号 (,) 分隔的正则表达式是什么?例如:

max,emily,john = ["max", "emily", "john"]

但是

max,"emily,kate",john = ["max", "emily,kate", "john"]

希望在 C# 中使用:Regex.Split(string, "PATTERN-HERE");

谢谢。

最佳答案

像这样的情况通常需要正则表达式以外的东西。它们很漂亮,但是处理这类事情的模式比它们有用的要复杂得多。

你可以尝试这样的事情:

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();
}

它可能需要一些调整才能完全遵循 CSV 规范,但基本逻辑是合理的。

关于c# - 正则表达式以逗号分割,除非被引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com