Necesito a menudo convertir un "bloque de cadena" (una cadena que contiene caracteres de retorno, por ejemplo, desde un archivo o un TextBox) en List<string>
.¿Cuál es la mejor forma de convertir una cadena separada por caracteres de retorno en una lista <string>?
¿Cuál es una forma más elegante de hacerlo que el método ConvertBlockToLines a continuación?
using System;
using System.Collections.Generic;
using System.Linq;
namespace TestConvert9922
{
class Program
{
static void Main(string[] args)
{
string testBlock = "line one" + Environment.NewLine +
"line two" + Environment.NewLine +
"line three" + Environment.NewLine +
"line four" + Environment.NewLine +
"line five";
List<string> lines = StringHelpers.ConvertBlockToLines(testBlock);
lines.ForEach(l => Console.WriteLine(l));
Console.ReadLine();
}
}
public static class StringHelpers
{
public static List<string> ConvertBlockToLines(this string block)
{
string fixedBlock = block.Replace(Environment.NewLine, "§");
List<string> lines = fixedBlock.Split('§').ToList<string>();
lines.ForEach(s => s = s.Trim());
return lines;
}
}
}
No es necesario pasar 'StrringSplitOptions.None' porque ese es el comportamiento predeterminado de Split(). –
@Seth: Estás equivocado, debes pasarlo, cuando envías un 'string []', (y no un 'char []').En este caso, posiblemente no sea obvio para usted que Environment.NewLine es una 'cadena []'. Entonces, tu comentario ayuda a resaltar que es bueno ser prolijo :) –
@silky: Mi mal, tienes razón. Eso es lo que recibo por comentar de prisa ... –