我有一个页面,我从表单中获取输入,然后在视图中显示它。
查看:
<%= form_tag("/page", method:"get") do %>
<%= text_area_tag(:x, @input)%>
<%= submit_tag("Submit Form") %> <%end%>
<%=@input%>
控制器:
def myMethod
if params[:x].present?
@input = "#{params[:x]}"
end
这很好但是我希望能够识别字符串中有空格的位置,然后用新行替换空格,并添加&#34;,&#34;。例如,如果用户输入“猫狗鼠标”,我希望视图返回:
'cat',
'dog',
'mouse',
有一种简单的方法可以使用ruby函数执行此操作,还是需要编写正则表达式文本搜索?
由于
答案 0 :(得分:1)
一个简单的gsub
会:
"cat dog mouse".gsub(" ", ",\n")
这将使用逗号/换行符替换空格
,
的每个匹配项。
<强>更新强>
由于您希望使用单引号封装每一行,因此一种简单的方法是:
"cat dog mouse".split # Split the string into an array (automatically splits by space)
.map{|w| "'#{w}'"}} # Reassemble it with single quotes added
.join(",\n") # Convert the array into a string again and insert the comma/newline characters between each entry
当然,这些代码都可以写在一行上。
以下是另一种快速方法:
string = "cat dog mouse"
new_string = "'" + string.split.join("',\n'") + "'" # Outputs the same as above. Less friendly to read, but is also shorter.
答案 1 :(得分:1)
您可以使用拆分,地图和联接:
"cat dog mouse".split(" ").map {|a| "'#{a}',\n"}.join
拆分会创建列表["cat", "dog", "mouse"]
地图会将其转换为["'cat',\n", "'dog',\n", "'mouse',\n"]
加入再次创建字符串"'cat',\n'dog',\n'mouse',\n"