我需要从完整句子中的“:”字符前面得到句子。
离。我有“这条消息将自毁:Ruby很有趣”
我只需要“此消息将自毁”
这是我的方法
def destroy_message(sentence)
check_list = /[^:]/
sentence_list = /^([a-zA-z\s]+) \:/
if sentence =~ check_list
puts "have :"
firstConsonant = sentence.match(sentence_list)
puts firstConsonant
else
puts "Not have :"
end
end
destroy_message("This message will self destruct: Ruby is fun ")
但是我没有得到任何东西。 我该如何解决?
谢谢!
答案 0 :(得分:4)
我只需要split
:
处的字符串并使用第一部分。使用复杂的正则表达式引擎可能会更快。
string = "This message will self destruct: Ruby is fun "
string.split(':').first
#=> "This message will self destruct"
答案 1 :(得分:0)
# ruby.rb
def destroy_message(sentence)
result, * = sentence.split(':')
unless result == "" # in case ":sentence_case"
puts "#{result}"
else
puts "Not have :"
end
end
destroy_message("This message will self destruct: Ruby is fun ")
答案 2 :(得分:0)
String#partition
专门用于做这种事情(也可能稍快一点)。
s, * = "This message will self destruct: Ruby is fun ".partition(":")
s # => "This message will self destruct"
答案 3 :(得分:-1)
puts firstConsonant
我什么也没得到。我该如何解决?
您可以使用#Scan Methods
def destroy_message(sentence)
if sentence.scan(/^[^:]+/)
puts "have :"
firstConsonant = sentence.scan(/^[^:]+/)
puts firstConsonant[0]
else
puts "Not have :"
end
end
destroy_message("This message will self destruct: Ruby is fun")
<强>输出强>
=> have :
This message will self destruct
关于使用
的正则表达式的说明^
声称我们处在一条线的起点。[^...]
否定字符类,它匹配任何字符,但不匹配特定字符类中的字符。+
将重复char类一次或多次。