Pregunta

¿Cuál es la mejor manera de crear cadena de múltiples líneas en C #?

Sé que los métodos siguientes:

Uso de StringBuilder

var result = new StringBuilder().AppendLine("one").AppenLine("two").ToString()

parece demasiado prolijo.

Uso @

      var result = @"one
two"

ve feo y mal formateado.

¿Conoce mejores formas?

¿Fue útil?

Solución

¿Qué hay de esto:

var result = string.Join(Environment.NewLine, new string[]{ 
    "one",
    "two" 
});

Es un poco doloroso y posiblemente una exageración, pero da la posibilidad de preservar la separación de líneas en el código.
Para mejorar las cosas un poco, se puede utilizar un método de ayuda:

static string MultiLine(params string[] args) {
    return string.Join(Environment.NewLine, args);
}

static void Main(string[] args) {
    var result = MultiLine( 
        "one",
        "two" 
    );
}

Otros consejos

¿Qué hay de esto?

var result = "one\ntwo";

Si eres exigente sobre los finales de línea del SO, el uso Format:

var result = String.Format("one{0}two", Environment.NewLine);

(Bueno, “inquieto” no es la palabra correcta:. Cuando se trata de archivos de texto, los finales de línea específicos de OS a menudo se desee o incluso necesario, cuando se trata de software heredado)

"mejor" es un punto muy composición muy abierta.

¿Está usted después de:

  • Rendimiento del código
  • velocidad del codificador puede escribir
  • Capacidad para otro codificador que entenderlo fácilmente
  • Capacidad para otro codificador para modificar fácilmente

Todos los marcar una gran diferencia en cuanto a la "mejor" manera de hacer algo.

Yo diría que depende de lo que necesita ...

Sin embargo, para simplificar se iría con:

var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();

Pero ya que no sabemos lo que usted lo necesita. Es bastante difícil dar mejores consejos

No debe definir las grandes cadenas en el código fuente. Debe definir en un archivo de texto externo:

string s = File.OpenText("myfile.txt").ReadToEnd();

lo @codymanix dicho , se puede colocar la cadena de varias líneas de largo en un archivo de recursos. Esto puede ser más fácil para ciertos escenarios de despliegue desde el "archivo" de texto que se incluirá en el archivo DLL / EXE.

Ehm, ¿qué hay de:

string s = 
  "abc\n" + 
  "def\n" ;

A veces se necesita más de una línea. Utilizo Environment.NewLine pero yo puso en un método para multiplicarlo. :)

    private string newLines(int multiplier)
    {
        StringBuilder newlines = new StringBuilder();
        for (int i = 0; i < multiplier; i++)
            newlines.Append(Environment.NewLine);
        return newlines.ToString();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top