2011-09-05 169 views
9

我试图添加空格结束在C#中的一串一串:填充使用PadRight方法

Trip_Name1.PadRight(20); 

也试过:

Trip_Name1.PadRight(20,' '); 

的这一切似乎工作。不过,我可以用任何其他字符来填充字符串。为什么?

我本来应该更具体,这里是全码:

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

什么是测试中的Trip_Name1?这些方法的返回值是什么(即*“似乎不起作用”*的意思)?你知道这些方法不会修改'Trip_Name1'的值,对吧? –

+1

你能提供代码示例吗?顺便说一下,字符串是不可变的,你必须重新分配填充后的结果值。 –

+0

我应该更具体,这里是完整的代码: lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,''); – Bruce

回答

23

字符串被immutable,它们不能被改变。 PadRight返回字符串填充的新实例,而不是改变一个它是从调用。你想要的是这样的:

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

有,为什么字符串是不可变的this的StackOverflow问题的大讨论。

编辑

的这一切似乎工作。不过,我可以用任何其他字符来填充字符串。

你实际上重新分配给它像上面的例子吗?如果是这样的话 - 那么没有更详细的我只能想到以下几点:

  1. 如果您存储在数据库中这一点,并取回,一些数据库用正确的设置可以“裁剪”给你的。
  2. 你有逻辑别的地方是微调的空格。处理用户输入时这很常见。

编辑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

+0

@ user554134 - 我根据您的更新进行了一些更改。 – vcsjones

+0

谢谢先生,白色空间:pre做到了! – Bruce

+0

不适用于我。同样的问题var str = INRECField.PadRight(11,'')+ INRECAccess.ToString(“MMddyy”)+ INRECSerial.PadRight(12,'')+ INRECSerial.PadRight(14,'')+ INRECAccessCode .PadRight(5,''); str = str.PadRight(32,''); – user2831855

4

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

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

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

编辑:

你的控制似乎修整结束空间。因此,请尝试为控件而不是文本设置填充。