对由空格或连字符分隔的每个字符串执行方法

时间:2016-05-17 00:37:58

标签: ruby regex string

我得到一个字符串,它可以包含字母,空格和连字符。例如:

str1 = "abcdef ghi-jkl"

我想在method中的每个上执行方法str1 word 这里是一系列字母。它由以下字母分隔:一个空格和/或连字符。

例如,在str1method("abcdef")method("ghi")method("jkl")将返回"abcdef* ghi*-jkl*"*是每个字符串方法的结果)。 method ("abcdef ghi-jkl")不等于(method("abcdef") method("ghi") method("jkl"))。空格和连字符将返回原来的位置。

我该怎么做?

我的预感是使用方法结合某种正则表达式方法。

1 个答案:

答案 0 :(得分:3)

def the_method(s)
  "[#{s}]"    # just an example
end

str1 = "abcdef ghi-jkl"
str1.gsub(/[^ -]+/) { |match| the_method(match) }
# or a bit shorter:
str1.gsub(/[^ -]+/, &method(:the_method))
# or a bit faster:
block = method(:the_method)
str1.gsub(/[^ -]+/, &block)

# all of those produce:
# => "[abcdef] [ghi]-[jkl]"