我有一个字符串:
str="Myname"
我想在字符串后添加四个空格。我所做的是:
str=str+" "+"somename"
当我打印str
as<%= str %>
时,输出只显示一个空格。我怎样才能使这项工作?我也试过:
str=str+" "*4+"somename"
这也给出了与上面给出的相同的输出。我不想打印这个。该字符串用作更多其他操作的 Ruby 变量。我可以在 Ruby 中实现,但在 RoR 中不行。
我有一个字符串:
str="Myname"
我想在字符串后添加四个空格。我所做的是:
str=str+" "+"somename"
当我打印str
as<%= str %>
时,输出只显示一个空格。我怎样才能使这项工作?我也试过:
str=str+" "*4+"somename"
这也给出了与上面给出的相同的输出。我不想打印这个。该字符串用作更多其他操作的 Ruby 变量。我可以在 Ruby 中实现,但在 RoR 中不行。
这与 HTML 如何处理空格有关。我假设您使用的是基于您使用的类似 Erb 的语法。如果您真的必须输出空格,请使用
.
但我建议你尝试用 CSS 来解决这个问题。
按照您的相同结构,它将是
str = raw(str + " " + "somename")
在 HTML 中,无论有多少,都只计算一个空格。所以你必须使用 HTML Entity
(意味着 Non Breaking SPace)来显示多个空格。
这raw
部分是必需的,因为默认情况下,Rails 不允许 HTML 实体或任何实际的 HTML 通过字符串输出,因为它们可以被恶意用户用来攻击您的站点和/或用户。
因此,您必须在 Rails 中使用raw
和使用。
如果您在控制台中尝试以下代码,您会发现问题出在您的 html 上;
str="Myname"
str=str+" "+"somename"
=> "Myname somename"
尝试如下
<pre>
<%= str %>
</pre>
您可以用 html 编码字符串替换空格,然后用 html_safe 或 raw 之类的渲染,
<%= raw "Myname somename".gsub(/\s/, " ") %>
您的变量中可能有 4 个空格,但浏览器会在 1 个空格后截断多余的空格,因此您可能无法查看它们。尝试关注
<pre>
<%= str %>
</pre>
您将看到空格已添加到您的代码中。为了实现你想要做的事情,放置而不是空白
<pre>I am a bad web programmer</pre>
存在的祸根的预标签,应不惜一切代价避免。在你的erb中使用它。
<%= raw(CGI.escapeHTML(str).gsub(/\s/, ' ')) %>