=()= / Говнокод #5113 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
sub translateToSearch {
        my($search)=@_;
        $search =~ s/\ /\*/g;

        my $s_up=to_upper($search);
        my $s_low=to_lower($search);


        my $s="";
        my $last_s="";
        for($i=0;$i<length($search);$i++) {
                my $ch=substr($search,$i,1);
                if(!($ch eq "*")) {
                        $s.="[".substr($s_up,$i,1).substr($s_low,$i,1)."]";
                } elsif( !($last_s eq "*")) {
                        $s.=".*";
                }
                $last_s=$ch;
        }

        return $s;
}

Функция ловеркейзит строку.

Запостил: tanenn tanenn, (Updated )

Комментарии (6) RSS

    • Но всё равно очень грязно. Необходимые символы не эскейпит, а если искать всю строку, то можно просто добавить флаг.
      Ответить
  • тут не ловеркейс, а подготовка выражения для поиска, возможно регулярки. "abcd" => "[Aa][Bb][Cc][Dd]"
    но кривовато как-то...
    Ответить
    • > но кривовато как-то...

      и очень очень кривовато. вся функция делает вот это, если не ошибаюсь:
      $string =~ s/([^*])/"[".uc($1).lc($2)."]"/ge;
      $string =~ s/\*/.*/g;


      незнание сучествования оператора ne - или того же split //; оба продокуметированы - уже заставляет задуматся.
      Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8