2010-07-19 23 views
7

Ho una semplice dichiarazione di codice che si legge:String.Format linea di rottura

Return String.Format("{0} {1} {2}", _var1, _var2, _var3) 

sto cercando di ottenere questo stringa formattata in uscita ogni var su di essa la propria linea. Sono nuovo a vb.net ma ho provato una cosa:

"{0}\n {1}\n {2}" 

che non ha funzionato. qualsiasi aiuto?

risposta

16

ne dite di questo:

Return String.Format(_ 
    "{1}{0}{2}{0}{3}{0}", _ 
    Environment.NewLine, _ 
    _var1, _ 
    _var2, _ 
    _var3 _ 
) 

questo potrebbe funzionare anche se è un po ' "più complicato":

Return New StringBuilder() _ 
    .AppendLine(_var1.ToString()) _ 
    .AppendLine(_var2.ToString()) _ 
    .AppendLine(_var3.ToString()) _ 
    .ToString() 
+0

vorrei utilizzare il vostro primo esempio. Inoltre non è necessario 'ToString()' ogni variabile per 'AppendLine()' – Pondidum

+0

@Pondidum: Beh, 'StringBuilder.AppendLine' prende un argomento' String', quindi finché OP ha 'Option Strict On' dovrà chiamare 'ToString' a meno che le tre variabili non siano già di tipo' String' (che non è stato indicato). –

+0

Ah, stavo guardando 'Append()' non 'AppendLine()' – Pondidum

0

vorrei andare con qualcosa di simile:

Return String.Format("{0}{1}{2}",_var1 & vbcrlf, _var2 & vbcrlf, _var3 & vbcrlf) 
+7

tutti quelli ripetuti vbcrlf e concats sembrano mancare il punto di string.format – Pondidum

+0

questo davvero non è male, IMO. ha senso per me piuttosto che avere tonnellate di sostituzioni da cercare per mantenere insieme le sintassi di avanzamento riga per ogni "frase" di avanzamento riga. – Rachael

2

Vorrei usare qualcosa come

String.Format("{1}{0},{2}{0},{3}{0}", vbcrlf, _var1, _var2, var2) 
0

OK Quindi VB è zoppo a questo proposito. Che ne dite di questo:

String.Format ("Var1: {0} \ nVar2: {1} \ nVar3: {2}". Sostituire ("\ n", vbCrLf), var1, var2, var3)

0

Questo funziona anche utilizzando letterale XML per la stringa di formato

 Dim fmt = _ 
<xml>Var 1: {0} 
Var 2: {1} 
Var 3: {2}</xml> 
     Trace.WriteLine(String.Format(fmt.Value, 1, 2, 3)) 
1
Function sformat([string], ParamArray args()) As String 
    [string] = [string].replace("\n", vbLf) 
    [string] = [string].replace("\r", vbCr) 
    Return String.Format([string], args) 
End Function 

uso come si userebbe String.Format ad eccezione delle chiamate sformat (StringaBella, param1, param2)