Книга: Программирование на языке 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
Отметим, что этот код не распознает символы забоя.
- 2.1. Представление обычных строк
- 2.2. Альтернативная нотация для представления строк
- 2.3. Встроенные документы
- 2.4. Получение длины строки
- 2.5. Построчная обработка
- 2.6. Побайтовая обработка
- 2.7. Специализированное сравнение строк
- 2.8. Разбиение строки на лексемы
- 2.9. Форматирование строк
- 2.10. Строки в качестве объектов ввода/вывода
- 2.11. Управление регистром
- 2.12. Вычленение и замена подстрок
- 2.13. Подстановка в строках
- 2.14. Поиск в строке
- 2.15. Преобразование символов в коды ASCII и обратно
- 2.16. Явные и неявные преобразования
- 2.17. Дописывание в конец строки
- 2.18. Удаление хвостовых символов новой строки и прочих
- 2.19. Удаление лишних пропусков
- 2.20. Повтор строк
- 2.21. Включение выражений в строку
- 2.22. Отложенная интерполяция
- 2.23. Разбор данных, разделенных запятыми
- 2.24. Преобразование строки в число (десятичное или иное)
- 2.25. Кодирование и декодирование строк в кодировке rot13
- 2.26. Шифрование строк
- 2.27. Сжатие строк
- 2.28. Подсчет числа символов в строке
- 2.29. Обращение строки
- 2.30. Удаление дубликатов
- 2.31. Удаление заданных символов
- 2.32. Печать специальных символов
- 2.33. Генерирование последовательности строк
- 2.34. Вычисление 32-разрядного CRC
- 2.35. Вычисление МD5-свертки строки
- 2.36. Вычисление расстояния Левенштейна между двумя строками
- 2.37. base64-кодирование и декодирование
- 2.38. Кодирование и декодирование строк (uuencode/uudecode)
- 2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы
- 2.40. Цитирование текста
- 2.41. Заключение
- 2.15. Преобразование символов в коды ASCII и обратно
- Yaffil Classic Server - замена InterBase Classic 4.0
- Имена объектов длиной 68 символов
- 13.3.4. Поиск и замена текста
- Установка и замена модема
- На сайтах вместо текста отображается непонятный набор символов
- В Adobe Acrobat Reader русский текст на экране читается нормально, а при печати получается текст из набора символов. Как...
- Наборы символов Firebird
- Поиск и замена данных
- В полученных письмах вместо текста непонятный набор символов
- Поиск и замена текста
- Автозамена и автоформат