Ruby:如何计算字符串开头和结尾的空格数?

时间:2012-05-04 11:09:51

标签: ruby string count space

要计算字符串s开头和结尾的空格数,我会这样做:

s.index(/[^ ]/)              # Number of spaces at the beginning of s
s.reverse.index(/[^ ]/)      # Number of spaces at the end of s

s包含空格时,此方法需要边缘大小写才能单独处理。

这样做有更好(更优雅/更有效)的方法吗?

5 个答案:

答案 0 :(得分:13)

另一个版本,这必须是最短的

s[/\A */].size
s[/ *\z/].size

答案 1 :(得分:3)

你可以马上做到这一点:

_, spaces_at_beginning, spaces_at_end = /^( *).*?( *)$/.match(s).to_a.map(&:length)

但绝对不会更优雅。

答案 2 :(得分:2)

我不知道它是否更有效,但这也有效。

s.count(' ') - s.lstrip.count(' ')
s.count(' ') - s.rstrip.count(' ')

答案 3 :(得分:1)

s.split(s.strip).first.size
s.split(s.strip).last.size

你也可以

beginning_spaces_length , ending_spaces_length = s.split(s.strip).map(&:size) 

答案 4 :(得分:0)

这也很容易:

beginning =  s.length - s.lstrip.length
ending = s.length - s.rstrip.length