我有一个字符串由单词'#'组成。例如'这#是#an#example'我需要根据倒数第二个单词提取最后一个单词或最后两个单词。
如果倒数第二个是' myword'我需要最后两个单词,否则只需要最后一个单词。
'this#is#an#example' => 'example'
'this#is#an#example#using#myword#also' => 'myword#also'
有没有比分裂和检查倒数第二个更好的方法?也许使用正则表达式?
感谢。
答案 0 :(得分:3)
您可以使用行尾$
并使myword#
前缀可选:
str = 'this#is#an#example'
str[/(?:#)((myword#)?[^#]+)$/, 1]
#=> "example"
str = 'this#is#an#example#using#myword#also'
str[/(?:#)((myword#)?[^#]+)$/, 1]
#=> "myword#also"
但是,在这种情况下,我认为使用正则表达式并不“更好”。我会使用类似Santosh(已删除)的答案:将行分为#
并使用if子句。
def foo(str)
*, a, b = str.split('#')
if a == 'myword'
"#{a}##{b}"
else
b
end
end
答案 1 :(得分:1)
str = 'this#is#an#example#using#myword#also'
array = str.split('#')
array[-2] == 'myword' ? array[-2..-1].join('#') : array[-1]
With regex:
'this#is#an#example'[/(myword\#)*\w+$/]
# => "example"
'this#is#an#example#using#myword#also'[/(myword\#)*\w+$/]
# => "myword#also"