Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Аналог str_replace


Автор: TwiSteR 20.3.2006, 17:37
Приветствую уважаемые,
помоите с аналогом из php
Цитата

str_replace
(PHP 3>= 3.0.6, PHP 4 , PHP 5)

str_replace --  Заменяет строку поиска на строку замены
Описание
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count])


Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace. Если не нужны сложные правила поиска/замены, использование этой функции предпочтительнее ereg_replace() или preg_replace().

С версии PHP 4.0.5, любой аргумент str_replace() может быть массивом.



Автор: Darhazer 20.3.2006, 17:45
php:
Код

$string = str_replace("apples", "orange", $string);


perl:
Код

$string =~ s/apples/oranges/gi;

/gi -> g заменить всех apples на oranges, i = case insensitive search
Вообще, если понимаеш английский, можеш почитать:
http://www.htmlite.com/perl025c.php

Автор: nitr 20.3.2006, 17:50
perldoc perlre читай это!
и ещё можешь добавить модификаторы /sm smile для поиска в тексте с абзацами и т.п.

Автор: TwiSteR 20.3.2006, 21:31
Спасибо за отклик,
конкретно надо вот что
Пробую так
Код

#!/usr/bin/perl
use strict;
my @drop_char_match    = ('24.gif', '.gif', '&quot;','^', '$', '&', '<', '>', '`', '\' ', '"', '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!', '*');
my @drop_char_replace  = ('',       '',     ' ',     ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',   ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ',  ' ', ' ', ' ');      
my $word ='ddd24.gif';

for(my $i=0;$i < scalar(@drop_char_match)-1;$i++)
{
    $word =~ s/$drop_char_match[$i]/$drop_char_replace[$i]/g;
    print $word."\n";
} 

Код

Выдаёт
ddd
ddd
ddd
 ddd
 ddd
 ddd
 ddd
 ddd
 ddd
 ddd
 ddd
   d d d
   d d d
   d d d
   d d d
Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE / at ./test.pl line 11.


Автор: nitr 20.3.2006, 23:09
Что тебе надо на выходе (результат какой)? Иправляй ошибку так:
$word =~ s/\Q$drop_char_match[$i]/$drop_char_replace[$i]/g;

Автор: TwiSteR 23.3.2006, 09:34
nitr,
Спасибо, то что надо !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)