示例文本:(約翰,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