我有两个字符串:
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"
答案 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"
进行替换的正则表达式在这里做了很多工作,但是你注意到我用了一个来进行分离。