我需要用ruby提取变量字符串的一部分,怎么做呢?

时间:2013-12-06 07:59:10

标签: ruby

我有一个字符串如下:

"/v1/Account/MAMTE4MTHJNJRKODBIMD/Call/34b4209a-5d97-11e3-9fb6-3d0f528c3bba/"

我想提取Account /和/ Call之间的位,换句话说:“MAMTE4MTHJNJRKODBIMD”

我试过了

string.delete('/v1/Account/')

没有成功。

'/ v1 / Account /'将始终相同,'/ Call /'将始终相同,但'/ Call /'右侧字符串的其余部分将有所不同。

我怎么能这样做?谢谢!

4 个答案:

答案 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