从字符串中删除单词和关联的逗号和/或空格

时间:2016-08-04 17:45:53

标签: ruby regex

我有两个字符串:

s1 = "abc, bcd, abc xyz, abc pq"
s2 = "abc"

我希望构建一个等于s1的第三个字符串,第一次出现s2。此外,如果s1中的出现后跟空格或逗号然后是空格,那么这些字符也将被删除。最后,如果该事件发生在s1的末尾,则将删除该事件之前的空格。

在上面的示例中,我希望生成字符串

"bcd, abc xyz, abc pq"

另外两个例子:

s2 = "xyz" should produce "abc, bcd, abc abc pq"
s2 = "pq"  should produce "bcd, abc xyz, abc"

您可以假设,如果s1包含s2,则字符串的该部分不会立即在逗号或空格以外的字符之前或之后。例如,您不必担心

等案例
s1 = "abc, bedbug, bed"
s2 = "bed"

1 个答案:

答案 0 :(得分:2)

逗号分隔的列表可以轻松解构和重构:

list = "abc, bcd, abc xyz, abc pq"
list.split(/,\s+/).join(', ')

这意味着您可以删除中间不需要的元素:

parts = list.split(/,\s+/)
parts.delete('abc')
parts.join(', ')
# => "bcd, abc xyz, abc pq"

进行替换的正则表达式在这里做了很多工作,但是你注意到我用了一个来进行分离。