我正在尝试在C#中为字符串末尾添加空格:
Trip_Name1.PadRight(20);
也尝试过:
Trip_Name1.PadRight(20,' ');
这些似乎都不起作用。但是我可以用任何其他角色填充字符串。为什么呢?
我应该更具体,这里是完整的代码:
lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' ');
答案 0 :(得分:27)
字符串为immutable,无法更改。 PadRight
返回填充字符串的新实例,而不是更改它所调用的实例。你想要的是这个:
Trip_Name1 = Trip_Name1.PadRight(20,' ');
关于为什么字符串是不可变的,this StackOverflow问题有一个很好的讨论。
修改强>:
这些似乎都不起作用。但是我可以用任何其他角色填充字符串。
你真的像上面的例子一样重新分配吗?如果是这种情况 - 那么没有更多细节我只能想到以下内容:
编辑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,' ');
编辑:
您的控件似乎正在修剪结尾空格。因此,尝试为控件而不是文本设置填充。