C#左键不工作

C#左键不工作,c#,winforms,C#,Winforms,我对从SQL中获取数字字符串并将其放入excel有一个问题,但是excel格式化数字时没有前导零 我编写的另一个程序读取excel并将其转换为pdf格式。在第二个程序中,我决定重新结束丢失的前导零 我正在使用.PadLeft执行此操作,但遇到了一些错误。出于文档的考虑,我将把我发现的这个问题添加到SO中,并回答它。 我的问题是: 我需要的数字字符串是10位,零的前面最多10位 我有像776666这样的数字来自excel,它们应该是00776666(10位) 这里是不起作用的地方。它没有附加任何零

我对从SQL中获取数字字符串并将其放入excel有一个问题,但是excel格式化数字时没有前导零

我编写的另一个程序读取excel并将其转换为pdf格式。在第二个程序中,我决定重新结束丢失的前导零

我正在使用.PadLeft执行此操作,但遇到了一些错误。出于文档的考虑,我将把我发现的这个问题添加到SO中,并回答它。 我的问题是:

我需要的数字字符串是10位,零的前面最多10位

我有像776666这样的数字来自excel,它们应该是00776666(10位) 这里是不起作用的地方。它没有附加任何零:

  string insuranceID = Convert.ToString(xlRange.Cells[i, 21].Value2 ?? "");
  insuranceID.PadLeft(10, '0');

为了使这段代码正常工作,我实际上必须这样编写代码:

string insuranceID = Convert.ToString(xlRange.Cells[i, 21].Value2 ?? "");
insuranceID = insuranceID.PadLeft(10, '0');
它必须将代码的赋值部分放在.PadLeft位的前面


我没有找到这个问题的答案,所以才找到了我的答案。我希望这对某人有帮助

为了使这段代码正常工作,我实际上必须这样编写代码:

string insuranceID = Convert.ToString(xlRange.Cells[i, 21].Value2 ?? "");
insuranceID = insuranceID.PadLeft(10, '0');
它必须将代码的赋值部分放在.PadLeft位的前面

我没有找到这个问题的答案,所以才找到了我的答案。我希望这对某人有帮助

在C#中,字符串/字符串是不可变的,因此简单地声明
string.PadLeft(x,'0')
将不起作用

请尝试以下方法:

string insuranceID = Convert.ToString(xlRange.Cells[i, 21].Value2 ?? "");   
insuranceID = insuranceID.PadLeft(10, '0');
为了节省您将来的时间,字符串的不变性也在许多字符串方法中发挥作用,例如
string.Replace()
string.ToUpper()
string.ToLower()
,等等。在C中字符串/字符串是不可变的,因此简单地声明
string.PadLeft(x,'0')
将不起作用

请尝试以下方法:

string insuranceID = Convert.ToString(xlRange.Cells[i, 21].Value2 ?? "");   
insuranceID = insuranceID.PadLeft(10, '0');

为了节省您将来的时间,字符串的不变性也适用于许多字符串方法,例如
string.Replace()
string.ToUpper()
string.ToLower()
,等等。

这与@NicholasSideras有关:更准确地说,这是因为字符串不可修改性——PadLeft创建了一个新字符串&OP只是通过不分配它来丢弃它。“如果PadLeft方法用空格字符填充当前实例,则此方法不会修改当前实例的值。相反,它返回一个新字符串,该字符串用前导paddingChar字符填充,使其总长度为totalWidth字符。”这与@NicholasSideras有关:更准确地说,这是因为字符串不变性——PadLeft创建了一个新字符串&OP只是通过不分配它来丢弃它。“如果PadLeft方法用空格字符填充当前实例,则此方法不会修改当前实例的值。相反,它返回一个新字符串,该字符串用前导paddingChar字符填充,使其总长度为totalWidth字符。”