从字符串数组中我需要获取以age开头的字符串 - 后跟最多2位数字和可选的“+”符号。
Ex:1岁,22岁,55岁,1岁以上,15岁以上
以下是我的阵列:
arr = ["vintage-colllections","age-5"]
or
arr = ["vintage-colllections","age-51+"]
我将从阵列中提取年龄“5岁”或“年龄51岁”。
我尝试了以下事项:
arr.find {|e| e.include?"age-"}
适用于其他场景,但在数组的第一个元素上面还包括(vint)年龄 - 在那里失败。
arr.find { |e| /age-\d*\+?/ =~ e}
工作正常,但我试图避免使用正则表达式。
还有其他更好的方法吗? 欢迎任何建议。
答案 0 :(得分:5)
使用start_with?
:
arr.find { |e| e.start_with?("age-") }
答案 1 :(得分:2)
我必须咬紧牙关不要使用正则表达式,但是这里有。我假设问题是我在问题上留下的评论中所描述的。
def find_str(arr)
arr.map { |str| str_match(str) }.compact
end
def str_match(str)
return nil unless str[0,4] == "age-"
last = str[-1] == '+' ? -2 : -1
Integer(str[4..last]) rescue return nil
str
end
find_str ["cat", "age-5"] #=> ["age-5"]
find_str ["cat", "age-51+"] #=> ["age-51+"]
find_str ["cat", "age-5t1+"] #=> []
find_str ["cat", "xage-51+"] #=> []