9

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

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

当包含空格时,这种方法需要边缘情况,s只需要单独处理。

有没有更好(更优雅/高效)的方法来做到这一点?

4

5 回答 5

15

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

s[/\A */].size
s[/ *\z/].size
于 2012-05-04T12:37:25.927 回答
3

您可以立即执行此操作:

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

不过绝对不是更优雅。

于 2012-05-04T11:23:29.660 回答
2

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

s.count(' ') - s.lstrip.count(' ')
s.count(' ') - s.rstrip.count(' ')
于 2012-05-04T11:24:45.087 回答
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) 
于 2012-05-04T11:52:24.810 回答
0

这也很容易做到:

beginning =  s.length - s.lstrip.length
ending = s.length - s.rstrip.length
于 2012-05-04T11:32:14.200 回答