2

我有一个字符串:

str="Myname"

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

str=str+"    "+"somename"

当我打印stras<%= str %>时,输出只显示一个空格。我怎样才能使这项工作?我也试过:

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

这也给出了与上面给出的相同的输出。我不想打印这个。该字符串用作更多其他操作的 Ruby 变量。我可以在 Ruby 中实现,但在 RoR 中不行。

4

6 回答 6

5

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

但我建议你尝试用 CSS 来解决这个问题。

于 2013-02-28T11:14:11.580 回答
2

按照您的相同结构,它将是

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

在 HTML 中,无论有多少,都只计算一个空格。所以你必须使用 HTML Entity &nbsp;(意味着 Non Breaking SPace)来显示多个空格。

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

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

于 2015-04-08T19:51:25.173 回答
0

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

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

=> "Myname    somename"

尝试如下

<pre>
  <%= str %>
</pre>
于 2013-02-28T11:18:42.520 回答
0

您可以用 html 编码字符串替换空格,然后用 html_safe 或 raw 之类的渲染,

<%= raw "Myname    somename".gsub(/\s/, "&nbsp;") %>
于 2013-02-28T11:59:28.947 回答
0

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

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

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

于 2013-02-28T11:14:54.817 回答
0
<pre>I am a bad web programmer</pre>

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

<%= raw(CGI.escapeHTML(str).gsub(/\s/, '&nbsp;')) %>
于 2017-06-01T15:42:18.950 回答