要计算字符串s
开头和结尾的空格数,我会这样做:
s.index(/[^ ]/) # Number of spaces at the beginning of s
s.reverse.index(/[^ ]/) # Number of spaces at the end of s
当s
包含空格时,此方法需要边缘大小写才能单独处理。
这样做有更好(更优雅/更有效)的方法吗?
答案 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