string[] columns = Utility.ToArrayUsingDelimiterAndQualifier(currentRecord, delimiter, qualifier, true);
public static class Utility
{
public static string[] ToArrayUsingDelimiterAndQualifier(this string text, char delimiter, char qualifier, bool stripQualifierFromResult)
{
var pattern = RegExPattern(delimiter, qualifier);
return stripQualifierFromResult ? Regex.Split(text, pattern).Select(s => s.Trim().Trim(qualifier).Replace(delimiter.ToString(CultureInfo.InvariantCulture), ",")).ToArray() : Regex.Split(text, pattern);
}
/// <summary>
/// Skip delimiter Regural Expression
/// </summary>
/// <param name="delimiter">Delimiter Value</param>
/// <param name="qualifier">Qualifier to use to skip the delimiter inside that</param>
/// <returns></returns>
private static string RegExPattern(char delimiter, char qualifier)
{
return string.Format(@"{0}(?=(?:[^{1}]*{1}[^{1}]*{1})*(?![^{1}]*{1}))", Regex.Escape(delimiter.ToString(CultureInfo.InvariantCulture)), Regex.Escape(qualifier.ToString(CultureInfo.InvariantCulture)));
}
}
No comments:
Post a Comment