Evgenii Legotckoi
Evgenii Legotckoi18 червня 2016 р. 01:49

Посібник користувача №04 - Ruby - Strings

Рубі працює з рядками так само, як і з числовими даними. Рядки можуть бути укладені як у подвійні лапки, так і одиночні.

ruby> "abc"
   "abc"
ruby> 'abc'
   "abc"

Подвійні та одиночні лапки мають різний ефект у деяких випадках. Рядки, укладені в подвійні лапки інтерпретують escape послідовності, помічені зворотним слешем, і для вбудовування виразів використовується послідовність #{} . Рядки, укладені в одиночні лапки не виконують інтерпретування; що ви можете спостерігати у таких прикладах:

ruby> print "a\nb\nc","\n"
a
b
c
   nil
ruby> print 'a\nb\n',"\n"
a\nb\nc
   nil
ruby> "\n"
   "\n"
ruby> '\n'
   "\\n"
ruby> "\001"
   "\001"
ruby> '\001'
   "\\001"
ruby> "abcd #{5*3} efg"
   "abcd 15 efg"
ruby> var = " abc "
   " abc "
ruby> "1234#{var}5678"
   "1234 abc 5678"

Рядки в Ruby обробляються розумніше і інтуїтивніше, ніж у Сі. Наприклад, ви можете склеїти рядки за допомогою + , а також повторити рядок багато разів, використовуючи знак * .

ruby> "foo" + "bar"
   "foobar"
ruby> "foo" * 2
   "foofoo"

Склеювання рядків є більш незграбним у Сі, тому, що потрібно явне управління пам'яттю.

char *s = malloc(strlen(s1)+strlen(s2)+1);
strcpy(s, s1);
strcat(s, s2);
/* ... */
free(s);

Але використовуючи Ruby, ми не розглядаємо простір, який займає рядок. Ми вільні від цього управління пам'яттю.

Нижче кілька речей, які ми можемо зробити з рядками:

Склеювання (Конкатенація):

ruby> word = "fo" + "o"
   "foo"

Повторення:

ruby> word = word * 2
   "foofoo"

Вилучення символів (Зверніть увагу, що символи є цілими типами в Ruby):

ruby> word[0]
   102            # 102 is ASCII code of `f' 
ruby> word[-1]
   111            # 111 is ASCII code of `o'

(Негативний знак означає усунення з кінця рядка, а не з початку)

Вилучення підрядків:

ruby> herb = "parsley"
   "parsley"
ruby> herb[0,1]
   "p"
ruby> herb[-2,2]
   "ey"
ruby> herb[0..3]
   "pars"
ruby> herb[-5..-2]
   "rsle"

Порівняння рядків:

ruby> "foo" == "foo"
   true
ruby> "foo" == "bar"
   false

Примітка: У Ruby 1.0 результат порівняння виводиться у верхньому регістрі, наприклад TRUE .

Нині ж давайте скористаємося деякими цими функціями. Це буде головоломка, відгадай слово, хоч головоломка для наступного коду і голосно сказано.

# save this as guess.rb
words = ['foobar', 'baz', 'quux']
secret = words[rand(3)]

print "guess? "
while guess = STDIN.gets
  guess.chop!
  if guess == secret
    print "You win!\n"
    break
  else
    print "Sorry, you lose.\n"
  end
  print "guess? "
end
print "The word was ", secret, ".\n"

На даний момент, не турбуйтеся занадто про вміст коду та його деталі. Просто запустіть програму та подивіться на результат її роботи.

% ruby guess.rb
guess? foobar
Sorry, you lose.
guess? quux
Sorry, you lose.
guess? ^D
The word was baz.
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 11:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 11:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 22:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi01 листопада 2024 р. 00:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 18:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 17:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 21:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi25 червня 2024 р. 01:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 17:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 13:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 19:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах