c#
  • winforms
  • string
  • 2011-08-05 61 views 94 likes 
    94

    ここで何が間違っていますか? {0}を変更しようとしたときstring.Format() "入力文字列が正しい形式ではありません"

    string tmp = @" 
        if (UseImageFiles) { 
         vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year) 
         calHeight += 22; 
        }"; 
    
    string x = "xter"; 
    tmp = string.Format(tmp, x); 
    

    私は

    入力文字列を取得するには、正しい形式で

    ませんでした。私はC#とWinFormsでこれをやっています。

    あなたのメソッドの引数は適切なフォーマットであることを確認してください:

    書式の例外が未処理だった
    入力文字列は、私が手

    トラブルシューティングのヒントは、正しい形式ではありませんでした。文字列をdatetimeに変換するときは、各変数をDateTimeオブジェクトに入れる前に文字列を解析して日付を取り出します。

    答えて

    248

    string.Format()は、 '{'または '}'をプレースホルダ(既に使用している{0} 'のようなもの)の一部と見なします。あなたはそれを倍増させることによって各リテラルの発生をエスケープする必要があります。

    string tmp = @" 
        if (UseImageFiles) {{ 
         ... 
        }}"; 
    
    +0

    素晴らしい、あなたはそれが正しい:)おかげで –

    +4

    さて、過度に貪欲に聞こえるしないようになったが、その後、あなたはこの答え;-) –

    +0

    @Mrを受け入れることをお勧めします:

    は、だからあなたの場合に行います。ランデブー:回答を受け入れる際にこの記事をお読みください:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

    関連する問題