示例文本:(约翰,36岁,阿拉巴马州)严格的方式
我在做什么我的代码中首先匹配的圆括号()内,然后使用拆分内容一个逗号作为分隔符。
private static IEnumerable<string> GetValues(string value)
{
var matches = Regex.Matches(value, @"\(.*\)");
if (matches.Count == 0) return new string[0];
var valueSplit = matches[0].Value;
var theString = valueSplit.Trim('(', ')');
var wordSplit = theString.Split(',').Select(x=>x.Trim());
return wordSplit;
}
对于样品文本(约翰,36,阿拉巴马州)上述代码返回:
- 约翰
- 阿拉巴马
现在的问题是我该如何为逗号创建一个转义序列,并将其用作分隔符。
,使得用于样本文本(约翰36,奥尔顿,这逗号阿拉巴马之前< -something)返回
- 约翰
- 奥尔顿,阿拉巴马
并递归地让我甚至可以逃避转义序列本身?我已经试过我的头周围与string.replace和Regex.Replace但无济于事。
继承人Fiddle
如果您知道,只有一个字段可以包含逗号(,它是放在最后),那么你可以限制分割的数量预期字段数。 – nhahtdh
两个想法。首先,应对此(CSV样式)的一种方法是将包含分隔符的字段用引号括起来,以便引号中包含的任何逗号不是分隔符。处理这个问题的另一种方法是选择一个不是逗号的分隔符。逗号实际上不是一个很好的分隔符。你可以选择一个不同的分隔符,比如'|'吗? – DWright
@DWright我完全同意逗号不是最好的分隔符,但不幸的是我无法对当前的设置进行任何更改。除了找到逃避分隔符的方法。 – AmatuerDev