如何正确地将String.PadRight()适配到字符串

时间:2017-11-23 20:20:02

标签: c#

我们都知道字符串是Immutable ,所以当我尝试在字符串的右边添加零时我遇到了问题

当前问题:

输入:bmdNoteOrdinal =" bla bla" 输出:" bla bla"

期望的结果

输入:bmdNoteOrdinal =" bla bla" 输出:bmdNoteOrdinal =" bla bla0000000000000"

我知道我做错了什么,我只是不知道如何解决它。

这是我的代码:

 int paddingNbr =0;
    if (bmdNoteOrdinal.Length < 20) {
        paddingNbr = 20 - bmdNoteOrdinal.Length;
        string tempbmdNoteOrdinal = bmdNoteOrdinal.PadRight(paddingNbr, '0');
        bmdNoteOrdinal = tempbmdNoteOrdinal;
    }

3 个答案:

答案 0 :(得分:4)

您对字符串长度的计算:

paddingNbr = 20 - bmdNoteOrdinal.Length;

不仅没有必要,而且是导致问题的原因。

String str = "bla bla";
Console.WriteLine(str.PadRight(20,'0')); // bla bla0000000000000
  

返回一个新字符串,该字符串左对齐此字符串中的字符   用指定的Unicode字符在右边填充它们,表示   指定的总长度

参考:https://msdn.microsoft.com/en-us/library/36f2hz3a(v=vs.110).aspx

答案 1 :(得分:1)

您只需要一个声明即可获得所需的效果。

var bmdNoteOrdinal = "blah blah";
bmdNoteOrdinal = bmdNoteOrdinal.PadRight(20, '0');
// result: "blah blah00000000000"

请注意,如果原始字符串大于20,则不添加填充。无需事先使用if()声明进行检查。

答案 2 :(得分:0)

问题是,PadRight不只是与int参数一样多次使用字符。但相反,它只使用char填充字符串,直到字符串与int值一样长。

int paddingNbr = 20;
if (bmdNoteOrdinal.Length < 20) { 
string tempbmdNoteOrdinal = bmdNoteOrdinal.PadRight(paddingNbr, '0');
bmdNoteOrdinal = tempbmdNoteOrdinal; 
}

这应该会给你想要的结果。