2016-10-17 85 views
-1

我得到了一些ExcelValues,这些字段从700-751和800-851命名。现在,我想获得结果并存储它们。发生将0粘贴到字符串如果int数<10

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

一个例外,当索引countDur小于10,因为countDur = 0结果不是700,它是70然后,依此类推。

所以我用

if(countDur < 10) 

但我认为是达到这个更聪明的方式。我知道有一个string.Format()方法,因为这些字段是int值,我有一个IoString()方法,我可以粘贴一个参数。

我的问题是,我必须粘贴什么作为参数?我无法在C#文档中找到它。

如果该值低于10,我希望在粘贴索引countDur之前写入0。

+0

顺便说一句,你不能标记多个答案,作为接受的答案,只有一个(因为你试图接受三种不同的)。选择一个工作,解释它,提供进一步阅读或显示多种方式(如C#6和更低)的链接。如果多个具有相同的等级,则选择最老的。相反,如果你有足够的声誉(我认为50),你可以得到所有有用的答案。 –

回答

1

虽然你正在寻找一种方式来使用ToString为什么不刚开始从您需要的指数for循环,而不是从0

for (int countDur = 700; countDur <= 751; countDur++) 
{ 
    string excelFieldMember = $"N{countDur}"; 
    string excelFieldNonMember = $"N{countDur+100}"; 
} 

在任何情况下,如果字段发生变化,使用“幻数”很容易出现错误。了解如何获取该值,而不是将其存储为循环的硬编码。 (也是一样的+100对非成员字段)

+1

谢谢你的工作:) – peterHasemann

+0

@peterHasemann - 不客气:)想想我说的“魔法数字”:) –

2

你想这样的:

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

这与填充尾随零的数量,让你得到700,而不是70

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")}"; 
相关问题