B S*_*ven 6 ruby string parsing split ruby-on-rails
分割空白,句号,逗号或双引号,而不是单引号:
str = %Q{this is the.string to's split,real "ok" nice-like.}
str.split(/\s|\.|,|"/)
=> ["this", "is", "the", "string", "", "", "", "to's", "split", "real", "", "ok", "", "nice-like"]
Run Code Online (Sandbox Code Playgroud)
如何雄辩地删除空字符串?
如何雄辩地删除短于MIN_LENGTH的字符串?
我对问题域并不完全清楚,但如果你只想避免空字符串,为什么不拆分一次或多次出现的分隔符呢?
str.split /[\s\.,"]+/
Run Code Online (Sandbox Code Playgroud)
split在这种情况下,使用的想法是不对的.你应该使用scan.
str = %Q{this is the.string to's split,real "ok" nice-like.}
str.scan(/[\w'-]+/)
# => ["this", "is", "the", "string", "to's", "split", "real", "ok", "nice-like"]
Run Code Online (Sandbox Code Playgroud)
为了匹配MIN_LENGTH或更长的字符串,请执行以下操作:
MIN_LENGTH = 3
str.scan(/[\w'-]{#{MIN_LENGTH},}/)
# => ["this", "the", "string", "to's", "split", "real", "nice-like"]
Run Code Online (Sandbox Code Playgroud)
何时使用拆分,何时使用扫描
scan.split.scan.split.我认为一个简单的方法如下:
str.split(/\s|\.|,|"/).select{|s| s.length >= MIN_LENGTH}
Run Code Online (Sandbox Code Playgroud)