Руби: как подсчитать количество пробелов в начале и конце строки?
подсчитать количество пробелов в начале и конце строки s
Я:
s.index(/[^ ]/) # Number of spaces at the beginning of s
s.reverse.index(/[^ ]/) # Number of spaces at the end of s
этот подход требует крайнего случая, когда s
содержит пробелы только для обработки отдельно.
есть ли лучший (более элегантный / эффективный) метод для этого?
5 ответов
вы могли бы сделать это сразу:
_, 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)