Lost in the matrix

C/C++/C#/Java, Multithreading


/// <summary>
/// CSVsplitter
/// </summary>
/// <param name="str">la chaine</param>
/// <param name="delimiter">le séparateur</param>
/// <param name="hasQuote">utilise les quotes</param>
/// <returns>tableau de chaines</returns>
public static string[] CSVsplitter(string str, char delimiter, bool hasQuote)
{
if (!hasQuote) // Si il n'y a pas de "quote"
return (str.Split(delimiter));
// On remplace le séparateur pour éviter les conflits
// avec l'expression régulière
str = str.Replace(delimiter, '¤');
string[] tab = (new Regex('¤' + "(?=(?:[^\"]*\"\"[^\"]*\"\")*(?![^\"]+\"\"))",
RegexOptions.IgnorePatternWhitespace)).Split(str);
// On retire les "quotes"
for (int i = 0; i < tab.Length; ++i)
tab[i] = (new StringBuilder(tab[i], 1,
tab[i].Length - 2, tab[i].Length - 2)).ToString();
return (tab);
}

0 commentaires:

Enregistrer un commentaire