我正在尝试在C#中给字符串末尾添加空格:
Trip_Name1.PadRight(20);
还尝试了以下方法:
Trip_Name1.PadRight(20,' ');
所有的方法似乎都不起作用。然而,我可以使用任何其他字符填充该字符串。为什么?
我应该更加具体,这是完整代码:
lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' ');
字符串是不可变的,它们不能被更改。 PadRight
方法返回一个填充后的新实例,而不是更改调用它的字符串实例本身。你需要的是这个:
Trip_Name1 = Trip_Name1.PadRight(20,' ');
这个StackOverflow问题有一些很棒的讨论,解释了为什么字符串是不可变的。
编辑:
似乎这些都不起作用。不过我可以使用任何其他字符填充该字符串。
你是否像上面的示例那样重新分配了它?如果是这种情况-除非有更多细节,否则我只能想到以下几点:
编辑2:
我应该更加具体
我要根据您的命名惯例猜测您正在处理HTML / ASP.NET。 在大多数情况下,在HTML中 - 空格被折叠。例如:
<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
的东西代替。
str = str.PadRight(32, ' ');
- user2831855请记住,这种方式并不适用于任何字符串操作功能,因为字符串是不可变的。它们只返回一个新的字符串,而不是更新现有实例。
PadRight 返回一个新的字符串,通过使用指定的 Unicode 字符向右填充该字符串中的字符,以达到指定的总长度,从而左对齐它们。
string Trip_Name1 = Trip_Name1.PadRight(20,' ');
编辑:
您的控件似乎会修剪结尾的空格。因此,尝试设置控件的填充而不是文本的填充。
Trip_Name1
是什么?这些方法的返回值是什么(即“似乎不起作用”是什么意思)?你知道这些方法不会修改Trip_Name1
的值,对吗? - Michael Petrotta