2016-10-17 10 views
-1

ExcelValuesを取得したフィールドの名前は、700-751と800-851です。今、結果を得て保管したいと思います。 countDur = 0ための結果ではない700あるため、インデックスcountDurが10未満である場合ペースト0〜文字列の場合int number <10

for (int countDur = 0; countDur<= 51; countDur++) 
{ 
    string excelFieldMember = $"N7{countDur}"; 
    string excelFieldNonMember = $"N8{countDur}"; 
} 

例外が発生し、それが次に70、などです。

だから私は

if(countDur < 10) 

を使用しかし、私はこれに到達するためのよりスマートな方法があると思います。私はstring.Format()メソッドがあり、フィールドがint値であることを知っています。私はこのためのパラメータを貼り付けることができるIoString()メソッドを持っています。

私の質問は、パラメータとして何を貼り付けなければならないのですか?私はC#のドキュメントでそれを見つけることができません。

値が10より小さい場合は、インデックスcountDurが貼り付けられる前に0を書きたいと思っています。

+0

ところで必要なものだと思う、これを試してみてください(同じことは非会員フィールドの+100のために行きます) (3つの異なるものを受け入れようとしているからです)。働くものを選び、それをうまく説明し、さらに読むためのリンクを提供したり、複数の方法(例:C#6以下)を示します。複数のレベルが同じレベルの場合、最も古いものが選択されます。代わりに、あなたが十分な評判を持っているなら(50と思っていれば)、すべての有益な回答をupvoteすることができます。 –

答えて

1

あなたは、なぜあなたが必要とするインデックスからforループを開始し、代わりの0からではないToStringを使用するための方法を探しているものの:

いずれの場合で
for (int countDur = 700; countDur <= 751; countDur++) 
{ 
    string excelFieldMember = $"N{countDur}"; 
    string excelFieldNonMember = $"N{countDur+100}"; 
} 

、 「マジックナンバー」を使用すると、フィールドが変更されるとバグが発生しやすくなります。値を取得する方法を参照してください。ループにハードコードされています。

+1

ありがとうございました:) – peterHasemann

+0

@peterHasemann - あなたは大歓迎です:私が "魔法の数字"で何を言ったか考えてみてください:) –

2

あなたがこの希望:あなたは700代わりの70を得るように

for (int countDur = 0; countDur<= 51; countDur++) 
{ 
    string excelFieldMember = $"N7{countDur:D2}"; 
    string excelFieldNonMember = $"N8{countDur:D2}"; 
} 

をこれは、後続ゼロと数を満たします。

MSDN: The Decimal ("D") Format Specifier

+0

@TimSchemelterは '$'は文字列形式の新しい規約ですか? – Sherlock

+1

@midtwo:はい、それはC#6の文字列補間演算子です。 https://msdn.microsoft.com/en-us/library/dn961160.aspx –

+0

申し訳ありませんが、いいです。私はあなたに最高のrepuを持って以来あなたに尋ねました。 – Sherlock

0

あなたは、受け入れ答えとして一つだけを複数の回答をマークすることはできません、私はそれはあなたが

string excelFieldMember = $"N7{countDur.ToString("D2")}"; 
string excelFieldNonMember = $"N8{countDur.ToString("D2")}";