我得到一个字符串,它可以包含字母,空格和连字符。例如:
str1 = "abcdef ghi-jkl"
我想在method
中的每个字上执行方法str1
( word 这里是一系列字母。它由以下字母分隔:一个空格和/或连字符。
例如,在str1
:method("abcdef")
,method("ghi")
,method("jkl")
将返回"abcdef* ghi*-jkl*"
(*
是每个字符串方法的结果)。 method ("abcdef ghi-jkl")
不等于(method("abcdef")
method("ghi")
method("jkl")
)。空格和连字符将返回原来的位置。
我该怎么做?
我的预感是使用方法结合某种正则表达式方法。
答案 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]"