2017-02-06 7 views
7

私のコードで何が問題になっていますか?ここに私のコードは次のとおりです。C#入力文字列の形式が正しくありませんでしたか?

public override string ToString() 
{ 
    return String.Format("Number : {0} \nFloors:{1} \nStreet \n{ \nName : {2},\nLength : {3}\n}",Number,Floors,Street.Name,Street.Length); 
} 
+0

Number、Floors、Street.NameおよびStreet.Lengthの種類は何ですか? –

+0

Number、Floors、Length is int名前は文字列です –

+2

とにかくフォーマットオプションがないので、タイプは関係ありません。 –

答えて

19

あなたはあなたの中括弧をエスケープする必要があります。

"Number : {0} \nFloors:{1} \nStreet \n{{ \nName : {2},\nLength : {3}\n}}" 

あなたは結果の文字列に{または}が必要な場合は、{{}}としてそれらをエスケープする必要があります。私は、文字列の補間を使用したいC#6で

+0

それは仕事です。ありがとうございます。 –

+1

@ErikHakobyan答えがあなたのために働くので、それの隣にある灰色のチェックマークをクリックすることによってそれを受け入れることを検討してください。これは、あなたが答えを見つけたことを他のサイトの訪問者に知らせることになり、Stack Overflowで新しいバッジを得ることができます。 – dasblinkenlight

+0

私はそれを行う。ありがとう。 –

8

public override string ToString() 
{ 
    return $"Number : {Number} \nFloors:{Floors} \nStreet \n{{ \nName : {Street.Name},\nLength : {Street.Length}\n}}"; 
} 

プラス:マンフレッドRadlwimmerが述べたように、あなたが}}として{{として{}をエスケープする必要があります。

1

C#6でない場合は、StringBuilderで操作します。

public override string ToString() 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("Number : @number \nFloors:@floors \nStreet \[email protected] : @streetLength\n"); 
    sb.Replace("@number", Number) 
     .Replace("@floors", Floors) 
     .Replace("@streetName", Street.Name) 
     .Replace("@streetLength", Street.Length); 
    return sb.ToString(); 
} 
関連する問題