我有一个字符串如下:
"/v1/Account/MAMTE4MTHJNJRKODBIMD/Call/34b4209a-5d97-11e3-9fb6-3d0f528c3bba/"
我想提取Account /和/ Call之间的位,换句话说:“MAMTE4MTHJNJRKODBIMD”
我试过了
string.delete('/v1/Account/')
没有成功。
'/ v1 / Account /'将始终相同,'/ Call /'将始终相同,但'/ Call /'右侧字符串的其余部分将有所不同。
我怎么能这样做?谢谢!
答案 0 :(得分:2)
=> str = "/v1/Account/MAMTE4MTHJNJRKODBIMD/Call/34b4209a-5d97-11e3-9fb6-3d0f528c3bba/"
=> str.split('/')[3]
=> "MAMTE4MTHJNJRKODBIMD"
答案 1 :(得分:0)
最简单的方法是子字符串:
id = string[12..31]
如果模式发生变化,您可以尝试使用正则表达式:
id = string.gsub(/\/[\/]+\/Account\/([^\/]+)\/.*/, '\1')
答案 2 :(得分:0)
使用正则表达式String#match
string.match(/\/v1\/Account\/(.*)\/Call\//)[1]
或
string[12..string.index("/Call/")-1]
答案 3 :(得分:0)
我只想指出你可以使用
%r{/Account/(.*)/Call}
而不是转义所有反斜杠。使用String#scan的另一种可能的解决方案:
string.scan(%r{/Account/(.*)/Call}).join