使用填充时,字符串格式的行为不符合预期

本文关键字:不符合 格式 填充 字符串 | 更新日期: 2023-09-27 18:10:28

我正试图根据来自SqlDataReader的结果形成表的文本表示。

while (unitsRdr.Read())
{
    note.AppendFormat("{0,-15}", String.Format("{0}({1})", unitsRdr.GetValue(0), unitsRdr.GetValue(1)));
}

现在我期望发生的是我应该得到4组项目,右边的内边距等于15。这样的

BP(mm'Hg)      HR(bpm)        RR(rpm)        Sa O2(%)       |<-- this would be the end of the string.

但是我得到的是

BP(mm'Hg          )HR(bpm            )RR(rpm            )Sa O2(%              )|<-- this is the end of the string.

似乎在(之后开始计数,)放在空格数之后。

什么是正确的格式化方式,使文本像我的第一个例子?


对于任何想要它的人,这里是源表

desc         unit
------------ ----------
BP           mm'Hg     
HR           bpm       
RR           rpm       
Sa O2        %         

使用填充时,字符串格式的行为不符合预期

我强烈怀疑问题在于unitsRdr.GetValue(1)返回的值实际上比您认为的要长。我非常怀疑string.Format正在做那件事。试着用unitsRdr.GetValue(1).Trim()代替——或者用一个硬编码的文字值来测试它。