如何用红宝石切割弦

时间:2011-07-26 15:06:09

标签: ruby regex string

我有字符串:

до 100(прошло до 15 лет)
до 100 (прошло от 15 лет)
до 75
до 100 (10 лет)
до 100 (10 лет)

我想剪切像

这样的字符串
до 100
до 100
до 75
до 100
до 100

3 个答案:

答案 0 :(得分:7)

strings = ['до 100(прошло до 15 лет)',
           'до 100 (прошло от 15 лет)',
           'до 75',
           'до 100 (10 лет)',
           'до 100 (10 лет)']

strings.map! { |str| str[/до \d+/] }

p strings    #=> ["до 100", "до 100", "до 75", "до 100", "до 100"]

答案 1 :(得分:6)

有几种不同的方法。例如,如果字符串有一个字符串,则可以从第一个(开始剪切字符串。但是,我喜欢这种更明确的正则表达式方法:

regex = /^до \d+/
str = "до 100(прошло до 15 лет)"
result = str[regex] # "до 100"

正则表达式/^до \d+/匹配до的实例和字符串开头出现的一系列数字。语法str[regex]返回第一个(仅在此情况下)匹配,如果没有匹配则返回nil

答案 2 :(得分:5)

如下:

cut = full.match(/^до \d*/)[0]

...也就是说,匹配锚定到字符串开头的字符до,后跟任意数量的数字;返回整个匹配的部分。