Ruby字符串操作如何添加空间?

时间:2011-10-14 11:41:43

标签: ruby

我遇到字符串操作问题。

这是用我的字符串操作来实现的:

我有什么:

<item name="RFSF "Blindspot"" type="project" id="34"/>

我想在“”之前添加一个换行符,它还应该gsub所有现有的空格。

这是XML生成器:

xmlmenu.item(:name=> convert_html_entities(kidsmovies[n].name),  :type=>"project", :id=> kidsmovies[n].id)      

我希望做的例子:

xmlmenu.item(:name=> convert_html_entities(kidsmovies[n].name).gsub(remove all whitespace).gsub(add one whitespace between the words).gsub.(create a linebreak just before ""),  :type=>"project", :id=> kidsmovies[n].id)  

2 个答案:

答案 0 :(得分:1)

首先,你有一个错误的XML,它必须是:

<item name="RFSF \"Blindspot\"" type="project" id="34"/>

然后,削减额外的空间:

string.gsub(/\S+/).map.join(' ')

或:

string.split(' ').join(' ')

但是create a linebreak just before ""是什么?

答案 1 :(得分:1)

把它放在帮手中:

def format_name(str)
  html_escape(str.gsub(/\s+/, " ")) + "\n"
end

然后使用它而不是convert_html_entities,这是无效的(因为它没有转义引号,使XML输出无效)。喜欢这样:

xmlmenu.item(:name=> format_name(kidsmovies[n].name), :type=>"project", :id=> kidsmovies[n].id)