На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Внимательно изучите правила раздела перед созданием темы
0. ПРИЛАГАЙТЕ СВОИ СКРИПТЫ.
1. Прежде чем создать топик, используйте поиск. Возможно это уже обсуждалось.
2. В топике указывайте ОС, режим работы скрипта (CLI|CGI). Очень желателен вывод лог-файлов и того места, куда у вас назначен вывод данных (STDOUT|STDERR)
3. Помните: вы знаете что вы хотите, а форумчане - нет. Поэтому следуйте простому правилу: грамотный развернутый вопрос - грамотный развернутый ответ.
Модераторы: ANDLL
  
    > выкинуть из строки подстроки
      Есть строка вида "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);

      очень плохо соображаю в регулярных выражениях, наверняка есть какой-то более элегантный способ :yes:

      Добавлено
      $line = "aaa - 5, bbb - 0, ccc - 8";

      $line =~ s!, .* - 0,!,!; :D

      Добавлено
      $line = "aaa - 5, bbb - 0, ccc - 8";

      $line =~ s!, .* - 0,!,!; :D
        ExpandedWrap disabled
          $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";
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0219 ]   [ 15 queries used ]   [ Generated: 28.03.24, 20:17 GMT ]