从HTML字符串数组中删除空格

时间:2016-08-22 19:41:38

标签: html ruby

给定数组

["<p>&gt;&gt;&gt;Lorem ipsum dolor</p>",
"<p>Lorem ipsum dolor <strong>sit amet, consectetur adipisicing</strong> elit, sed do eiusmod</p>",
"<p>.....</p>",
"<p> ...</p>",
"<p>tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,</p>",
"<p>quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo</p>",
"<p>… </p>",
"<p>consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse</p>",
"<p>…</p>",
"<p>. . . </p>",
"<p> …</p>",
"<p>cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non</p>",
"<p>…</p>",
"<p>…</p>",
"<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
"<p></p>",
"<p></p>",
"<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>"]

我想接收没有段落标记的数组,其中包含...,在开头或结尾处有空格,并用{...替换包含"<p>…</p>"["<p>&gt;&gt;&gt;Lorem ipsum dolor</p>", "<p>Lorem ipsum dolor <strong>sit amet, consectetur adipisicing</strong> elit, sed do eiusmod</p>", "<p>…</p>", "<p>tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,</p>", "<p>quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo</p>", "<p>…</p>", "<p>consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse</p>", "<p>…</p>", "<p>cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non</p>", "<p>…</p>", "<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>", "<p></p>", "<p></p>", "<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>"] 的标记{1}}

{{1}}

1 个答案:

答案 0 :(得分:0)

我会循环遍历数组的每个元素,并将每个<p>. . .</p>修改为所需的格式。

array.map! do |el|
    if el =~ /<p>(((\s?\.)+(\s+)?)|(\s+)?…(\s+)?)<\/p>/
        el = '<p>…</p>'
    end
    el
end

此代码将替换每个p标记。 。 。格式为<p>…</p>,结果为

["<p>&gt;&gt;&gt;Lorem ipsum dolor</p>",
"<p>Lorem ipsum dolor <strong>sit amet, consectetur adipisicing</strong> elit, sed do eiusmod</p>",
"<p>…</p>",
"<p>…</p>",
"<p>tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,</p>",
"<p>quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo</p>",
"<p>…</p>",
"<p>consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse</p>",
"<p>…</p>",
"<p>…</p>",
"<p>…</p>",
"<p>cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non</p>",
"<p>…</p>",
"<p>…</p>",
"<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
"<p></p>",
"<p></p>",
"<p>proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>"]

然后我将针对前一个元素检查每个元素,如果它与前一个元素匹配并且当前元素等于<p>…</p>

,则删除它
idx = array.length - 1
while idx > 0 
    if array[idx] == array[idx - 1] && array[idx] == '<p>…</p>'
        array.delete_at(idx)
    end
    idx -= 1
end