Forum Webscript.Ru
Программирование => Perl => Тема начата: andrez от 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? :)
-
а так:
(substr($str,0,1)=~/\\./) ? ($str=~ s/.{1}//) : ((substr($str,1,1)=~/\\./)? ($str=~ s/.{2}//) : ($str=\'--\'));
[проверил -работает]
-
Не очень понятна задача, но я бы сделал без регекспов
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\';
?
-
vladsu:
my $str = \'..lala\';
такое просто невозожно, т.к в строке всего 4 символа, а точка либо 1, либо 2
-
vladsu
:) узнаю знакомый почерк! :)
но не забываем что регексы медленные
:)
-
andrez:
такое просто невозожно, т.к в строке всего 4 символа, а точка либо 1, либо 2
Хорошо, тогда какой должен быть результат если
my $str = \'.lal\';
или
my $str = \'l.al\';
или
my $str = \'..al\';
?
-
vladsu:
my $str = \'.lal\'
результат $str=\'lal\';
vladsu:
my $str = \'l.al\'
результат $str = \'al\';
vladsu:
my $str = \'..al\';
такое тоже не возможно, т.к точка всего одна и она либо есть, либо ее нет!
-
В таком случае
#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
Примерно так:
unless ($str =~s /(^\\.([^\\.].{2})$)|(^.{1}\\.(.{2})$)/$2$4/) {$str = \'--\'}
P.S. только при условии что $str состоит из 4 символов, иначе \'--\'
[я тоже проверил, работает ;)]
-
я свой вариант подправил ,хотя из-за таких "упрощений" код становится не очень читабельным :) из-за чего многим и не нравится perl