¿Cuál es una buena forma de recorrer cada línea de una cadena multilínea sin utilizar mucha más memoria (por ejemplo, sin dividirla en una matriz)?C#: Looping a través de líneas de cadena multilínea
Respuesta
sugiere emplear una combinación de StringReader
y mi clase LineReader
, que forma parte de MiscUtil pero también disponible en this StackOverflow answer - puede copiar fácilmente esa clase en su propio proyecto de utilidad. Se podría utilizar de esta manera:
string text = @"First line
second line
third line";
foreach (string line in new LineReader(() => new StringReader(text)))
{
Console.WriteLine(line);
}
bucle sobre todas las líneas de un conjunto de datos de cadena (ya sea un archivo o lo que sea) es tan común que no debería requerir el código de llamada a ser la prueba de nula etc :) dicho esto, si hace quieren hacer un bucle manual, esta es la forma que normalmente prefiero sobre Fredrik:
using (StringReader reader = new StringReader(input))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// Do something with the line
}
}
de esta manera es suficiente para probar la nulidad de una vez, y tampoco tiene que pensar en un ciclo do/while (que por alguna razón siempre me lleva más esfuerzo leer que un ciclo straight while).
Se puede utilizar un StringReader
para leer una línea a la vez:
using (StringReader reader = new StringReader(input))
{
string line = string.Empty;
do
{
line = reader.ReadLine();
if (line != null)
{
// do something with the line
}
} while (line != null);
}
de MSDN para StringReader
string textReaderText = "TextReader is the abstract base " +
"class of StreamReader and StringReader, which read " +
"characters from streams and strings, respectively.\n\n" +
"Create an instance of TextReader to open a text file " +
"for reading a specified range of characters, or to " +
"create a reader based on an existing stream.\n\n" +
"You can also use an instance of TextReader to read " +
"text from a custom backing store using the same " +
"APIs you would use for a string or a stream.\n\n";
Console.WriteLine("Original text:\n\n{0}", textReaderText);
// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
string aLine, aParagraph = null;
StringReader strReader = new StringReader(textReaderText);
while(true)
{
aLine = strReader.ReadLine();
if(aLine != null)
{
aParagraph = aParagraph + aLine + " ";
}
else
{
aParagraph = aParagraph + "\n";
break;
}
}
Console.WriteLine("Modified text:\n\n{0}", aParagraph);
He aquí un fragmento de código rápida que se encuentra la primera línea no vacía en una cadena:
string line1;
while (
((line1 = sr.ReadLine()) != null) &&
((line1 = line1.Trim()).Length == 0)
)
{ /* Do nothing - just trying to find first non-empty line*/ }
if(line1 == null){ /* Error - no non-empty lines in string */ }
Sé que esto ha sido contestada, pero me gustaría añadir mi propia respuesta:
using (var reader = new StringReader(multiLineString))
{
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
// Do something with the line
}
}
- 1. Looping a través de documentos en MongoDB
- 2. Looping a través de $ _POST variables
- 3. Looping a través de XML con jQuery
- 4. C# multilínea cadena con html
- 5. Looping a través de 2 listas a la vez
- 6. <input> capacidad multilínea a través de CSS
- 7. La definición de una cadena a través de múltiples líneas
- 8. Looping a través de archivos en una carpeta
- 9. Looping a través de Python Regex coincide con
- 10. Looping a través de bits en un número entero, ruby
- 11. Looping a través de una matriz de hashes en Perl
- 12. Looping a través de hojas de cálculo con PHPExcel
- 13. Looping a través de una lista de acciones
- 14. Looping a través de las categorías de wordpress
- 15. C#: cadena [] a cadena delimitada. ¿Hay un trazador de líneas?
- 16. Looping a través de un cursor SQLite toma demasiado tiempo
- 17. Cadena multilínea en Asp clásico
- 18. Objetivo C - Looping a través de todas las propiedades en una clase?
- 19. Looping a través de filas en un DataView
- 20. Looping a través de todas las propiedades del objeto php
- 21. Looping a través de dos selectores diferentes al mismo tiempo
- 22. Looping a través de localStorage en HTML5 y JavaScript
- 23. Looping a través de los alfabetos en Bash
- 24. Looping a través de celdas combinadas en VBA
- 25. Looping a través de una matriz con ColdFusion
- 26. largo de contenido/multilínea a través cfset en ColdFusion
- 27. Windows Batch File Looping a través de directorios a archivos de proceso?
- 28. Cadena PHP multilínea con PHP
- 29. gvim cadena larga multilínea que resalta
- 30. Multilínea expresión regular en C#