搜索子字符串的最有效方法是什么

时间:2014-11-27 06:56:12

标签: ruby string

在下面的字符串中,我想获得153的修订号。这部分位于文本“Revision:153 \ n”旁边的字符串内。

string = "Path: blah\blah\nWorking Copy Root Path: blah\blah\nURL: blah\blah\nRelative URL: ^/README.txt\nRepository Root: blah\blah\nRepository UUID: 2d7234b632a-38239d-4384f-9ac3-c05286096652\nRevisio
    n: 153\nNode Kind: file\nSchedule: normal\nLast Changed Author: user_name\nLast Changed Rev: 153\nLast Changed Date: 2014-11-27 11:38:21 +0530 (Thu, 27 Nov 2014)\nText Last Updated: 2014-11-27 12:
    05:24 +0530 (Thu, 27 Nov 2014)\nChecksum: 7ecb9f79f244r4f996e637d6f23\n\n"

目前我这样做:

string.split('Revision').last.split('Node').first.chomp.gsub(': ','').to_i

哪个输出153

有没有更好的方法呢?

2 个答案:

答案 0 :(得分:2)

您可以在此处使用String's []和正则表达式:

string[/Revision:\s(\d+)/, 1]

答案 1 :(得分:1)

您可以使用正则表达式。 例如,如下所示:

string.scan(/Revision: (\d+)/)

澄清一点,如果你想捕捉多次出现,请使用它。