Ruby 将字符串拆分为一个字符

Ruby 将字符串拆分为一个字符,ruby,regex,Ruby,Regex,我要拆分以下字符串: user = "Lisa: yes" 这样我就能得到“丽莎” 现在我有: user[/([a-zA-Z].*?):/] 但它又回来了 "Lisa:" 如何拆分字符串,使其将每个字母返回到冒号 提前谢谢 按以下步骤操作: user = "Lisa: yes" user[/([a-zA-Z].*?):/,1] # => "Lisa" 文件: 如果提供了Regexp,则返回字符串的匹配部分。如果捕获跟随正则表达式(可能是捕获组索引或名称),则会跟随正则表达式而返回

我要拆分以下字符串:

user = "Lisa: yes"
这样我就能得到“丽莎”

现在我有:

user[/([a-zA-Z].*?):/]
但它又回来了

"Lisa:" 
如何拆分字符串,使其将每个字母返回到冒号

提前谢谢

按以下步骤操作:

user = "Lisa: yes"
user[/([a-zA-Z].*?):/,1] # => "Lisa"
文件:

如果提供了Regexp,则返回字符串的匹配部分。如果捕获跟随正则表达式(可能是捕获组索引或名称),则会跟随正则表达式而返回MatchData的组件


另外,也有一些其他方法可供参考:

# replacing anything after `:` with empty.
user.gsub(/:.*/, "")

# splitting the string around : and picking the first one.
user.split(/\s*:\s*/)[0]

您可以使用此:
user.split(“:”)。首先

user = "Lisa: yes" 
=> "Lisa: yes"
irb(main):006:0> user.split(':').first
=> "Lisa"
split方法将把字符串转换成一个数组,这个数组:['Lisa','yes']。然后,您只需使用第一个方法对其进行解析,以获取第一项,
Lisa
。简单直观,因为我个人讨厌正则表达式。我也喜欢阿鲁普拉什回答;)

还有一些方法:

user[0...user.index(':')]
user.partition(':').first
user.each_line(':').first.chomp(':')
require 'stringio'
StringIO.new(user).gets(':').chomp(':')
StringIO.new(user).readline(':').chomp(':')
t = $/; $/ = ':'
user.each_line.first.chomp
StringIO.new(user).gets.chomp
StringIO.new(user).readline.chomp
$/ = t
user.chars.take_while {|c| c != ':'}.join

尝试使用以下方法优化原始regexp:


第二个不是与
split(':')[0]
相同吗?@CarySwoveland是的
\s*
表示
符号周围的任何可选空格。Haha+1表示选项。(虽然最像是@sidney的答案)马克,那些晚到晚宴的人一定会吃到面包屑。@Jesse,+1,因为他发现了这一点。如果您没有阅读我的编辑,将获得+5奖励。(读者:我以前有过
require'useringio'
)@Jesse,我想你已经发现你只需要点击蓝色的“Edited…”信息。现在用我给你的6分去买些糖果。(我不想听到你不知道我可以给你分数。)注意,奥雅纳通过添加
,使
*
“懒惰”(也称为“不贪婪”,“不情愿”)。贪婪的形式应该是“丽莎:是的,贝蒂:不”[/([a-zA-Z].*):/,1]#=>“丽莎:是的,贝蒂”,而不是我们想要的。
 user[/[a-zA-Z].*?(?=:)/]
 # => "Lisa"