2011-09-05 223 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,' '); 

編輯:

你的控制似乎修整結束空間。因此,請嘗試爲控件而不是文本設置填充。