Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.61.119] |
|
Сообщ.
#1
,
|
|
|
Есть строка вида "param1 - value1, param2 - value2..."
нужно выкинуть построки, в которых value=0 написал что-то вроде $line = "aaa - 5, bbb - 0, ccc - 8"; @var = split(/, /, $line); $out_str = ""; foreach my $elem (@var) { if ($elem !~ /(.*) - 0/) { $out_str .= $elem.", "; } } $out_str = substr($out_str, 0, -2); очень плохо соображаю в регулярных выражениях, наверняка есть какой-то более элегантный способ Добавлено $line = "aaa - 5, bbb - 0, ccc - 8"; $line =~ s!, .* - 0,!,!; Добавлено $line = "aaa - 5, bbb - 0, ccc - 8"; $line =~ s!, .* - 0,!,!; |
Сообщ.
#2
,
|
|
|
$L = "value1 - 0,value2 - 0,value3 - 12,value4 - 0,value3 - 7,value4 - 0"; 1 while($L =~ s/,\S+ - 0,/,/); # удаляем внутри $L =~ s/^\S+ - 0,//; # удаляем слева $L =~ s/,\S+ - 0$//; # удаляем справа print "$L\n"; |