Автор Тема: отрезаем строку необходимой длины  (Прочитано 5579 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
отрезаем строку необходимой длины
« : 18 Сентября 2005, 18:19:08 »
Например есть строка:
my $string="Когда, наконец, выйдет "e;Перл 6"e;?";
Хочу получить первые 25 символов. Например, так:
$string=~m/^(.{0,25}).*/;
my $short_string=$1;
Получаем вполне закономерный результат:
"Когда, наконец, выйдет &q"
Но, как несложно догадаться, это не совсем то, что хочется получить.
Каким способом можно решить проблему? Учитывая что символы могут иметь как буквенные, так и цифровые коды?
Ну к чему все это, лучше бы водки выпили...

Оффлайн Корепанов Иван

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
отрезаем строку необходимой длины
« Ответ #1 : 18 Сентября 2005, 18:33:30 »
Попробуй например, сначала заменить все " на кавычки

а после отрезания произвести обратную замену кавычек на "

Оффлайн Корепанов Иван

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
отрезаем строку необходимой длины
« Ответ #2 : 18 Сентября 2005, 18:37:03 »
$string=~s/\\"/\\"/g;

$string=~m/^(.{0,25}).*/;
my $short_string=$1;

$short_string=~s/\\"/\\"/g;

Я не знаю, может быть есть замена, которая автомически переводит все символы типа &...; в нормальные...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
отрезаем строку необходимой длины
« Ответ #3 : 18 Сентября 2005, 18:41:51 »
Корепанов Иван, это понятно:) Но "e; в качестве примера. Таким макаром придётся всю таблицу символов перебивать. Что-то слишком сложно. Наверняка кто-нить по этому поводу модуль на CPAN выложил, только бы понять каким запросом его искать.
Ну к чему все это, лучше бы водки выпили...

Оффлайн Корепанов Иван

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
отрезаем строку необходимой длины
« Ответ #4 : 18 Сентября 2005, 21:23:03 »
тогда ничего другого не могу предложить :)

Оффлайн Anarki

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xcoding.org
отрезаем строку необходимой длины
« Ответ #5 : 19 Сентября 2005, 19:24:27 »
Только HTML коды?
Есть модуль http://search.cpan.org/~frighetti/HTML-Encoder-0.00_04/
HTML::Encoder, который переводит спец. символы в HTML коды.
Думаю чуть доработать его на обратное, вставить регулярки и пройтись по ключам его хеша, заменяя в строке на значения элементов хеша.
SmartDev Team

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
отрезаем строку необходимой длины
« Ответ #6 : 19 Сентября 2005, 20:53:48 »
glebushka
CGI::unescape пробовал?
upd. сори, не понял задачи.
Я бы взял html_unescape из HTML::Stream
« Последнее редактирование: 19 Сентября 2005, 21:27:54 от NeoNox »
The documentations is your friend

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
отрезаем строку необходимой длины
« Ответ #7 : 20 Сентября 2005, 02:13:34 »
NeoNox
Спасибо за наводку. В описании к самому модулю HTML::Stream порекомендавли заюзать для моих целей функцию decode из HTML::Entities. Его и заюзал.
(вот что по поводу html_unescape в доке:
Note: provided for convenience and backwards-compatibility only. You may want to use the more-powerful HTML::Entities::decode function instead: unlike this function, it can collapse entities like copy and ccedil into their Latin-1 byte values.)
Ну к чему все это, лучше бы водки выпили...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28