» Главная
eXcode.ru » Статьи » Ruby
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 3





Ruby cтроки




Ruby работает как с числами, так и со строками. Строка может быть заключена в двойные ("...") или одинарные (′...′) кавычки.



ruby> "abc"

"abc"

ruby> ′abc′

"abc"

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



ruby> print "a\nb\nc","\n"

a

b

c

nil

ruby> print ′a\nb\nc′,"\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.

А теперь попробуем некоторые из этих свойств в работе. Это будет пазл "Угадай слово", хотя паззл, возможно, звучит чересчур величественно для нашей поделки ;-)



# сохраните в файл 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.

(С учетом вероятности успеха 1/3, могло бы быть и лучше)
К началу статьи





Добавил: MadvEXДата публикации: 2007-10-06 10:57:03
Рейтинг статьи:3.11 [Голосов 9]Кол-во просмотров: 6595

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какой жанр фильмов вам нравится?
Ужасы
11% (23)
Триллеры
7% (14)
Комедии
28% (57)
Боевики
4% (8)
Фантастика
27% (54)
Элитарное кино
2% (4)
Мультфильмы (3D, Анимэ)
11% (23)
Мелодраммы
1% (3)
Драммы
2% (4)
Другой
6% (13)

Проголосовало: 203
- Тук-тук!
- Кто там?
- Это я, Веб-браузер!
- А фреймы поддерживаешь?
- Не-е-а!
- Тогда и за веревочку не дергай!
Рейтинг: 1.8/10 (5)
Посмотреть все анекдоты