Опишите различные методы работы со строками.ruby-23

Создание строк

Базовые способы создания строк

str1 = "Строка в двойных кавычках"  # Интерполяция и escape-последовательности
str2 = 'Строка в одинарных кавычках' # Без интерполяции
str3 = %q(Простая строка)            # Эквивалент одинарных кавычек
str4 = %Q(Строка с интерполяцией #{1+2}) # Эквивалент двойных кавычек
str5 = String.new("Явное создание")  # Через конструктор
str6 = <<```HEREDOC                    # Heredoc с отступом
  Многострочная
  строка
HEREDOC

Основные операции со строками

Конкатенация и повторение

"Hello" + " " + "World" # => "Hello World" (конкатенация)
"Ruby" * 3             # => "RubyRubyRuby" (повторение)
"Hello" << " Ruby"     # => "Hello Ruby" (модифицирующая конкатенация)

Интерполяция переменных

name = "Анна"
"Привет, #{name}!" # => "Привет, Анна!"

Доступ к символам и подстрокам

str = "Hello Ruby"
str[0]      # => "H" (первый символ)
str[-1]     # => "y" (последний символ)
str[6..9]   # => "Ruby" (подстрока)
str[6, 4]   # => "Ruby" (с позиции 6 взять 4 символа)
str.chars   # => ["H", "e", "l", "l", "o", " ", "R", "u", "b", "y"]

Поиск в строках

str = "Ruby is awesome"
str.include?("Ruby")  # => true
str.index("is")       # => 5 (позиция начала)
str.match?(/awe/)     # => true (регулярное выражение)
str.start_with?("Ru") # => true
str.end_with?("some") # => true

Модификация строк

Изменение регистра

"Ruby".upcase      # => "RUBY"
"RUBY".downcase    # => "ruby"
"hello world".capitalize # => "Hello world"
"hello world".titleize   # => "Hello World" (из Rails)

Замена подстрок

"Hello Java".gsub("Java", "Ruby") # => "Hello Ruby"
"aabbcc".tr('abc', 'xyz')         # => "xxyyzz" (посимвольная замена)

Удаление пробелов

"  Ruby  ".strip   # => "Ruby"
"  Ruby  ".lstrip  # => "Ruby  "
"  Ruby  ".rstrip  # => "  Ruby"

Разделение и соединение строк

"one,two,three".split(',') # => ["one", "two", "three"]
"one two three".split      # => ["one", "two", "three"] (по пробелам)
["Ruby", "is", "cool"].join(" ") # => "Ruby is cool"

Полезные методы проверки

"123".numeric?    # => true (из Rails)
"".empty?         # => true
"   ".blank?      # => true (из Rails)
"Ruby".ascii_only? # => true

Многострочные строки

str = <<```TEXT
  Первая строка
  Вторая строка
  Третья строка
TEXT

str.lines        # => ["Первая строка\n", "Вторая строка\n", "Третья строка"]
str.each_line { |line| puts line.chomp }

Форматирование строк

"Name: %s, Age: %d" % ["Anna", 28] # => "Name: Anna, Age: 28"
"PI: %.2f" % Math::PI              # => "PI: 3.14"
"%-10s" % "Ruby"                   # => "Ruby      " (выравнивание)

Безопасная работа со строками

Экранирование HTML

require 'cgi'
CGI.escapeHTML("<div>Hello</div>") # => "&lt;div&gt;Hello&lt;/div&gt;"

Заморозка строк

str = "Ruby".freeze
str << " on Rails" # => RuntimeError: can't modify frozen String

Конвертация в другие типы

"123".to_i       # => 123
"12.3".to_f      # => 12.3
"hello".to_sym   # => :hello
"one,two".split(',') # => ["one", "two"]

Работа с кодировками

str = "Привет"
str.encoding          # => #<Encoding:UTF-8>
str.force_encoding('ASCII') # Изменяет кодировку (не преобразует!)
str.encode('Windows-1251') # Конвертация в другую кодировку

Полезные методы из ActiveSupport

"ruby_on_rails".camelize    # => "RubyOnRails"
"RubyOnRails".underscore    # => "ruby_on_rails"
"hello world".parameterize  # => "hello-world"

Резюмируем: Ruby предоставляет богатый набор методов для работы со строками, включая создание, модификацию, поиск, форматирование и преобразование. Понимание этих методов позволяет эффективно манипулировать строковыми данными, писать чистый и выразительный код. Особое внимание стоит уделить вопросам кодировок, безопасности (экранирование) и производительности (использование frozen strings).