Domanda

Qual è il modo migliore per creare stringa multi linea in C #?

Lo so i seguenti metodi:

Uso StringBuilder

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

sembra troppo prolisso.

Uso @

      var result = @"one
two"

sembra brutto e mal formattato.

Sai modi migliori?

È stato utile?

Soluzione

Che dire di questo:

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

E 'un po' doloroso e, eventualmente, un peso inutile, ma dà la possibilità di preservare la separazione righe nel codice.
Per migliorare le cose un po ', si potrebbe usare un metodo di supporto:

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

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

Altri suggerimenti

Che dire di questo?

var result = "one\ntwo";

Se sei esigente in fatto di fine riga specifici del sistema operativo, l'uso Format:

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

(Beh, “pignolo” non è la parola giusta:. Quando si tratta di file di testo, fine riga specifici del sistema operativo sono spesso desiderato o addirittura necessario, quando si tratta di software legacy)

"Best" è un punto ended molto molto aperta.

Sei dopo:

  • Performance del codice
  • Velocità il codificatore può scriverlo
  • Capacità per un altro programmatore per capire facilmente
  • Capacità per un altro codificatore di modificare facilmente

Tutte queste fanno una grande differenza per quanto riguarda il modo "migliore" di fare qualcosa.

Direi che dipende da quello che vi serve ...

Ma per semplificare lo vorrei andare con:

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

Ma dal momento che non sappiamo cosa l'avete bisogno per. E 'piuttosto difficile dare suggerimenti migliori

Non si dovrebbe definire le stringhe di grandi dimensioni nel codice sorgente. Si dovrebbe definire in un file di testo esterno:

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

quanto @codymanix detto , è possibile inserire la lunga stringa multilinea in un file di risorse. Questo può essere più facile per alcuni scenari di distribuzione in quanto il "file" di testo sarà incluso nella DLL / EXE.

Ehm, che ne dici di:

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

A volte è necessario più di una riga. Io uso Environment.NewLine ma ho messo in un metodo per moltiplicarlo. :)

    private string newLines(int multiplier)
    {
        StringBuilder newlines = new StringBuilder();
        for (int i = 0; i < multiplier; i++)
            newlines.Append(Environment.NewLine);
        return newlines.ToString();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top