J'ai un tableau d'octets (par exemple byte [] data), qui contient du texte avec des délimiteurs de ligne personnalisés, par exemple: "\ r \ n" (CRLF "\ x0D \ x0A"), "\ r", "\ n", "\ x0D \ x0A \ x0D" ou même "@".C# lire un texte ligne par ligne, où le délimiteur de ligne est personnalisé
En ce moment je vais utiliser la solution suivante:
- casse ligne Normaliser CRLF (ici un exemple comment normalise CRLF What is a quick way to force CRLF in C#/.NET?)
Utilisez StringReader lire la ligne de texte par ligne
using (String Reader sr = new StringReader(data.ToString())) { string line; while ((line = sr.ReadLine()) != null) { // Process the line } }
J'utilise C#, .NET 3.5. Y a-t-il une meilleure solution?
Merci.
Vous devriez normaliser vos fins de ligne à '\ n', qui ne prend que 2 remplacements au lieu de 3. Notez dans votre lien que la réponse se normalise d'abord à' \ n' et seulement après cela change '\ n'' '\ r \ n'. –
Yup, Il s'avère que j'ai besoin de ne pas maliser les fins de ligne à l'un des suivants: "\ r", "\ n", "\ r \ n" http://msdn.microsoft.com/fr-fr /library/system.io.stringreader.readline.aspx Une ligne est définie comme une séquence de caractères suivie d'un saut de ligne ("\ n suivi d'un saut de ligne ("\ r \ n"). La chaîne résultante ne contient pas le retour de chariot de terminaison et/ou le saut de ligne. La valeur renvoyée est une référence null (Nothing en Visual Basic) si la fin de la chaîne sous-jacente a été atteinte. –
Pour une performance plus rapide, vous pouvez le diviser à la main ... –