我们都知道字符串是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;
}
答案 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;
}
这应该会给你想要的结果。