Книга: Программирование на языке Ruby

2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы

2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы

Бывает, что имеется строка с символами табуляции, а мы хотели бы преобразовать их в пробелы (или наоборот). Ниже показаны два метода, реализующих эти операции:

class String
 def detab(ts=8)
  str = self.dup
  while (leftmost = str.index("t")) != nil
   space = " "* (ts-(leftmost%ts))
   str[leftmost]=space
  end
  str
 end
 def entab(ts=8)
  str = self.detab
  areas = str.length/ts
  newstr = ""
  for a in 0..areas
   temp = str[a*ts..a*ts+ts-1]
   if temp.size==ts
    if temp =~ /+/
     match=Regexp.last_match[0]
     endmatch = Regexp.new(match+"$")
     if match.length>1
      temp.sub!(endmatch,"t")
     end
    end
   end
   newstr += temp
  end
  newstr
 end
end
foo = "Это всего лишь тест. "
puts foo
puts foo.entab(4)
puts foo.entab(4).dump

Отметим, что этот код не распознает символы забоя.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.945. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз