使用PadRight方法填充字符串

时间:2011-09-05 03:31:47

标签: c# .net string

我正在尝试在C#中为字符串末尾添加空格:

Trip_Name1.PadRight(20);

也尝试过:

Trip_Name1.PadRight(20,' ');

这些似乎都不起作用。但是我可以用任何其他角色填充字符串。为什么呢?

我应该更具体,这里是完整的代码:

lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' ');

2 个答案:

答案 0 :(得分:27)

字符串为immutable,无法更改。 PadRight返回填充字符串的新实例,而不是更改它所调用的实例。你想要的是这个:

Trip_Name1 = Trip_Name1.PadRight(20,' ');

关于为什么字符串是不可变的,this StackOverflow问题有一个很好的讨论。

修改

  

这些似乎都不起作用。但是我可以用任何其他角色填充字符串。

你真的像上面的例子一样重新分配吗?如果是这种情况 - 那么没有更多细节我只能想到以下内容:

  1. 如果您将其存储在数据库中并进行检索,则某些具有正确设置的数据库可能会“修剪”。
  2. 你在其他地方有逻辑修剪白色空间。这在处理用户输入时很常见。
  3. 编辑2

      

    我应该更具体

    我将根据您处理HTML / ASP.NET的命名约定进行猜测。在大多数情况下,在HTML中 - white space is collapsed。例如:

    <div><a>Hello           World</a></div>
    <div><a>Hello World</a></div>
    

    两个a标记将呈现相同的内容,因为正在折叠空白区域。如果您确实使用HTML - 这可能是您的理由以及为什么填充适用于所有其他字符。如果你做了标记渲染的视图源 - 它是否包含额外的空格?

    如果您想保留空白,请尝试在名为white-space的元素上应用CSS样式,并将其设置为pre。例如:

    <a style="white-space:pre">hello     world      </a>
    

    这将导致保留空白区域。请记住,使用这样的空白区域有缺点。浏览器不会以相同的方式呈现它们等等。我不会将它用于布局目的。请考虑使用CSS和类似min-width的内容。

答案 1 :(得分:4)

请记住,这种方式不适用于任何字符串操作功能,因为字符串是不可变的。它们只返回一个新字符串,而不是更新现有实例。

  

PadRight返回一个左对齐字符的新字符串   通过使用指定的Unicode在右侧填充它们来使用此字符串   字符,指定的总长度。

string Trip_Name1 = Trip_Name1.PadRight(20,' ');

编辑:

您的控件似乎正在修剪结尾空格。因此,尝试为控件而不是文本设置填充。