Автор Тема: можно ли упростить?  (Прочитано 4615 раз)

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

Оффлайн andrez

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли упростить?
« : 17 Июня 2004, 14:01:18 »
if (substr($str,0,1)=~/\\./) {$str=~ s/.{1}//;}
       else{ if (substr($str,1,1)=~/\\./) {$str=~ s/.{2}//;}
   else {$str=\'--\';} }


чтоб бы чтонить такого вида

if (substr($htp,0,1)=~/\\./ or substr($htp,1,1)=~/\\./)
 { и чтоб если выполнилось правое условие делай то-то, если левое делай другое}

else  else {$str=\'--\';}

Такое возможно в Perl?  :)

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
можно ли упростить?
« Ответ #1 : 17 Июня 2004, 14:27:41 »
а так:
(substr($str,0,1)=~/\\./) ? ($str=~ s/.{1}//)  : ((substr($str,1,1)=~/\\./)? ($str=~ s/.{2}//)  :  ($str=\'--\'));

[проверил -работает]
« Последнее редактирование: 17 Июня 2004, 16:21:38 от Green Kakadu »
 в исканиях.

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
можно ли упростить?
« Ответ #2 : 17 Июня 2004, 15:10:28 »
Не очень понятна задача, но я бы сделал без регекспов


if ( substr($str,0,1) eq \'.\' and substr($str,1,1) eq \'.\') {
     substr($str,0,2) = \'\';
} elsif ( substr($str,0,1) eq \'.\' ) {
     substr($str,0,1) = \'\';
} else {
     $str = \'--\';
}


Какой должен быть результат если
my $str = \'..lala\';
и если
my $str = \'.lala\';
?
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн andrez

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли упростить?
« Ответ #3 : 17 Июня 2004, 15:24:41 »
Цитировать
vladsu:
my $str = \'..lala\';

такое просто невозожно, т.к в строке всего 4 символа, а точка либо 1, либо 2

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
можно ли упростить?
« Ответ #4 : 17 Июня 2004, 15:25:18 »
vladsu
:) узнаю знакомый почерк! :)

Цитировать
но не забываем что регексы медленные

:)
And no religion too...

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
можно ли упростить?
« Ответ #5 : 17 Июня 2004, 15:30:05 »
Цитировать
andrez:
такое просто невозожно, т.к в строке всего 4 символа, а точка либо 1, либо 2

Хорошо, тогда какой должен быть результат если
my $str = \'.lal\';
или
my $str = \'l.al\';
или
my $str = \'..al\';
?
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн andrez

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли упростить?
« Ответ #6 : 17 Июня 2004, 15:34:47 »
Цитировать
vladsu:
my $str = \'.lal\'

результат $str=\'lal\';
Цитировать
vladsu:
my $str = \'l.al\'

результат $str = \'al\';

Цитировать
vladsu:
my $str = \'..al\';

такое тоже не возможно, т.к точка всего одна и она либо есть, либо ее нет!

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
можно ли упростить?
« Ответ #7 : 17 Июня 2004, 16:15:10 »
В таком случае

#my $str = \'.lal\';
#my $str = \'lala\';
my $str = \'l.al\';

if ( index($str,\'.\') == -1 ) {
     $str = \'--\';
} else {
     substr($str,0,index($str,\'.\')+1) = \'\';
}

print $str;
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн andrez

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
можно ли упростить?
« Ответ #8 : 17 Июня 2004, 16:17:12 »
ок, большое спасибо

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
можно ли упростить?
« Ответ #9 : 17 Июня 2004, 16:18:18 »
andrez
Примерно так:

unless ($str =~s /(^\\.([^\\.].{2})$)|(^.{1}\\.(.{2})$)/$2$4/) {$str = \'--\'}

P.S. только при условии что $str состоит из 4 символов, иначе \'--\'
[я тоже проверил, работает ;)]
« Последнее редактирование: 17 Июня 2004, 16:27:10 от Phoinix »

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
можно ли упростить?
« Ответ #10 : 17 Июня 2004, 16:23:30 »
я свой вариант подправил ,хотя из-за таких "упрощений" код становится не очень читабельным :) из-за чего многим и не нравится perl
 в исканиях.

 

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