winforms C#左侧填充区不工作

0ve6wy6x  于 2022-11-16  发布在  C#
关注(0)|答案(3)|浏览(166)

我遇到了一个问题,从SQL中提取一个数字字符串并将其放入Excel中,但Excel将数字格式化为没有前导零。
我写的另一个程序读取excel并将其放入pdf。正是在这第二个程序中,我决定重新追加丢失的前导零。
我正在使用.PadLeft执行此操作,但遇到了一些错误。为了文档的缘故,我将把我发现的这个问题添加到SO中,并回答它。以下是我的问题:
我需要的数字字符串是10位数,与零的前面多达10位数。
我有数字像77776666来自excel,他们应该是0077776666(10位数)这里是什么没有工作。它没有附加任何零:

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

xwmevbvl1#

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

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

它必须将代码的赋值部分放在.PadLeft位的前面。
我在SO上没有找到这个问题的答案,只是找到了我的答案。我希望这能帮助一些人。

s2j5cfk0

s2j5cfk02#

在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()等。

vaqhlq81

vaqhlq813#

您也可以只使用原始代码,但将.PadLeft(10,'0')附加到语句末尾,并删除第二行,如下所示:

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

从而消除了创建单独语句的需要,而不是可能出于调试目的。

相关问题