2013-02-28 80 views
2

我有一個字符串:追加空格爲字符串

str="Myname" 

我希望字符串後添加四個空格。我所做的是:

str=str+" "+"somename" 

當我打印str<%= str %>,輸出只顯示了一個空白。我該如何做這項工作?我也試過:

str=str+" "*4+"somename" 

這也給出了與上面相同的輸出。我不想打印這個。該字符串被用作更多其他操作的Ruby變量。我可以在Ruby中創建它,但不能在RoR中創建。

回答

5

這與HTML如何處理空白有關。我假設你使用的是基於你使用的Erb like語法。如果您確實必須輸出空格,請使用&nbsp;

但我建議你嘗試用CSS來解決這個問題。

+0

no。我想用紅寶石。這不適用於打印。此字符串正用於在數據庫中搜索 – 2013-02-28 11:15:22

+0

您可以編輯問題以準確顯示您使用它的位置嗎?對我來說'<%= %>'似乎很奇怪。 – harm 2013-02-28 11:26:45

+0

也許是[sprintf](http://www.ruby-doc.org/core-2.0/Kernel.html#method-i-sprintf)你在找什麼。 – harm 2013-02-28 11:27:09

0

變量中可能有4個空格,但瀏覽器會在1個空格後截斷多餘的空格,因此您可能無法查看它們。請嘗試以下步驟

<pre> 
<%= str %> 
</pre> 

您會看到空格被添加到代碼中。要實現你正在嘗試做的事情,請輸入 而不是空格

0

如果你在控制檯中嘗試下面的代碼,你會發現問題出在你的html上;

str="Myname" 
str=str+" "+"somename" 

=> "Myname somename" 

嘗試,因爲遵循

<pre> 
    <%= str %> 
</pre> 
+0

請注意有問題的編輯。 – 2013-02-28 11:19:58

+0

請你解釋一下這個問題,我不明白你想說什麼 – 2013-02-28 11:27:51

0

你可以替換HTML編碼字符串的空間,然後用html_safe或生喜歡渲染,

<%= raw "Myname somename".gsub(/\s/, "&nbsp;") %> 
2

按照你相同的結構,它會be

str = raw(str + "&nbsp;&nbsp;&nbsp;&nbsp;" + "somename")

在HTML中,只計算一個空白空間,無論多少。所以你必須使用HTML Entity &nbsp;(意思是Non Breaking SPace)來顯示多個空格。

raw部分是必需的,因爲默認情況下,Rails不允許通過字符串輸出HTML實體或任何實際的HTML,因爲它們可以被惡意用戶用來攻擊您的站點和/或用戶。

因此,您必須在Rails中使用raw並使用&nbsp;

0
<pre>I am a bad web programmer</pre> 

存在的危險的前標籤,應該不惜一切代價避免。 在你的erb中使用它。

<%= raw(CGI.escapeHTML(str).gsub(/\s/, '&nbsp;')) %>