我有一个字符串
str = "<strong><strong>HI</strong></strong>".
我想删除<strong>
和</strong>
的重复实例以获取<strong>HI</strong>
。
可能有两个以上的实例。
我尝试使用squeeze('<strong>')
,但它似乎无法完成这项工作。
答案 0 :(得分:1)
你可以这样做:
str = "<strong><strong>HI</strong></strong>"
str.gsub('<strong><strong>', '<strong>').
gsub('</strong></strong>', '</strong>') # => "<strong>HI</strong>"
答案 1 :(得分:0)
你可以做这样的事情
str = "<strong><strong>HI</strong></strong>"
p str[/<.*?>/]+ str[/>([^<]*)<\//,1]+str[/<\/.*?>/]
答案 2 :(得分:0)
其他选项是使用正则表达式来获得所需的结果。
str.match(/<[a-z]+>[a-zA-Z]+<[\/a-z]+>/)
=> #<MatchData "<strong>HI</strong>">
答案 3 :(得分:0)
这可以通过多种方式完成,其中一种方式是使用gsub
,如下所示:
str
.gsub(/(<strong>)+/, '<strong>')
.gsub(/(<\/strong>)+/, '</strong>')
第一个gsub
用一个<strong>
替换<strong>
的一个或多个连续实例,第二个gsub
替换</strong>
的一个或多个连续实例使用一个</strong>
(请注意,正则表达式部分中的/
需要进行转义。)
值得注意的是,此方法无法确保打开和关闭<strong>
代码的匹配数量。