![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Всем привет... Элементарнейшая задачка- есть строка, если она длинее определенного числа символов- обрезать ее.
В голову мне пришел сразу такой вариант
Но к моему удивлению он не работает.. Почему- не понимаю Есть конечно вариант порезать тсроку на символы в помощью split и соединить в цикле первые 40 элементов... Но это уж совсем в лоб... Есть красивое решение этой проблемы? |
|||
|
||||
| FooBar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 25.2.2008 Репутация: 1 Всего: 3 |
функция substr
|
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Я так и думал, что где-то туплю ) Бывает такое
|
|||
|
||||
| kavkaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 26.12.2007 Репутация: 1 Всего: 2 |
{,40} – говорит выбрать до 40 символов, и якобы является максимальным квантификатором
.* – вот это точно максимальный квантификатор, и если вы сказали {,40}(обратите внимание на запятую), то он оставит этому квантификатору 0 симовлов, в то время как сам (.*) заберет все символы. в общем запятую уберите и, кажется, будет вам счастье ps не читал что то нигде чтоб у кантификаторов был приоритет "жадности", но кажется он есть |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
FooBar правильно сказал:
$str = substr $str, 0, 40; А регулярное выражение не работало по простой причине: нет квантификатора {,40}. Вот так работает: $str =~ s/(.{40}).*/$1/; Ну вот, пока писал и проверял, уже ответили. Это сообщение отредактировал(а) amg - 2.11.2008, 14:32 |
|||
|
||||
| zyxerr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 17.7.2008 Репутация: 2 Всего: 2 |
в дополнение к этому вопросу. У меня есть переменная $a. Ее значение меняется (50 или 75 или 100) и мне надо использовать это число как квантификатор. Запись \s{$a} - не работает, как еще можно сделать?
|
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Это сообщение отредактировал(а) KSURi - 5.11.2008, 17:41 -------------------- Died at Life.pl line 21 |
|||
|
||||
| ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Присоединяюсь к KSURi,
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
| Dima85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
Добрый вечер.
А может есть альтернатива этому:
Работающая быстрее. |
|||
|
||||
| amg |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Сильно быстрее -- вряд ли. Но попробуйте на всякий случай
|
||||
|
|||||
| Dima85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
amg, спасибо.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |