在字符串中添加空格

时间:2013-02-28 11:08:39

标签: ruby-on-rails ruby string whitespace

我有一个字符串:

str="Myname"

我想在字符串后添加四个空格。我做的是:

str=str+"    "+"somename"

当我将str打印为<%= str %>时,输出只显示一个空格。我怎样才能做到这一点?我也尝试过:

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

这也提供与上面给出的输出相同的输出。我不想打印这个。该字符串用作更多其他操作的Ruby变量。我可以在Ruby中创建它,但不能在RoR中创建它。

6 个答案:

答案 0 :(得分:5)

这与HTML处理空格的方式有关。我假设你使用的是基于你使用的类似Erb的语法。如果你真的必须输出空格,请使用&nbsp;

但我建议您尝试使用CSS修复此问题。

答案 1 :(得分:2)

遵循相同的结构,它将是

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

在HTML中,只计算一个空白区域,无论多少。因此,您必须使用HTML实体&nbsp;(表示非破坏空间)来显示多个空格。

raw部分是必需的,因为默认情况下,Rails不允许HTML实体或任何实际的HTML输出字符串,因为恶意用户可以使用它们来攻击您的网站和/或用户。

因此,您必须使用raw并在Rails中使用&nbsp;

答案 2 :(得分:0)

您的变量中可能有4个空格,但浏览器会在1个空格后截断多余的空格,因此您可能无法查看它们。尝试以下

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

您将看到代码中添加了空格。要实现你想要做的事情而不是空白

答案 3 :(得分:0)

如果您尝试在控制台中执行以下代码,则会发现问题出在您的html;

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

=> "Myname    somename"

尝试如下

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

答案 4 :(得分:0)

你可以用html编码字符串替换空格,然后使用html_safe或raw like渲染,

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

答案 5 :(得分:0)

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

存在祸害的预标签应该不惜一切代价避免。 在你的erb中使用它。

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