要计算字符串开头和结尾的空格数,s
我会这样做:
s.index(/[^ ]/) # Number of spaces at the beginning of s
s.reverse.index(/[^ ]/) # Number of spaces at the end of s
当包含空格时,这种方法需要边缘情况,s
只需要单独处理。
有没有更好(更优雅/高效)的方法来做到这一点?
另一个版本,这必须是最短的
s[/\A */].size
s[/ *\z/].size
您可以立即执行此操作:
_, spaces_at_beginning, spaces_at_end = /^( *).*?( *)$/.match(s).to_a.map(&:length)
不过绝对不是更优雅。
我不知道它是否更有效,但这也有效。
s.count(' ') - s.lstrip.count(' ')
s.count(' ') - s.rstrip.count(' ')
s.split(s.strip).first.size
s.split(s.strip).last.size
你也可以
beginning_spaces_length , ending_spaces_length = s.split(s.strip).map(&:size)
这也很容易做到:
beginning = s.length - s.lstrip.length
ending = s.length - s.rstrip.length