Perl - поизящнее изменить подстроку
От: DemAS http://demas.me
Дата: 02.11.04 12:01
Оценка:
Добрый день.

Есть исходная строка $source. Есть 2 целых числа — $begin и $end.
Есть подстрока $inline.
Надо заменить фрагмент $source начиная с $begin и заканчивая $end на $inline.

Решил сам с помощью трех substr — склейкой трех фрагментов — до $begin, $inline и после $end, но чуствую, что есть более красивый способ.

Заранее благодарен.
... << RSDN@Home 1.1.4 beta 3 rev. 220>>
Re: Perl - поизящнее изменить подстроку
От: butcher Россия http://bu7cher.blogspot.com
Дата: 02.11.04 13:03
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS> Решил сам с помощью трех substr — склейкой трех фрагментов — до $begin, $inline и после $end, но чуствую, что есть более красивый способ.

#!/usr/local/bin/perl

my $source = "before inline 123 test test 321 after inline";
my $inline = "| inline |";
my ($begin, $end) = (123, 321);

print "$source\n";
$source =~ s/($begin.+$end)/$inline/;
print "$source\n";

Не знаю насколько это изящнее, но быстрее навряд ли.. хотя для небольших строк может и ничего..

Нет ничего невозможного..
Re[2]: Perl - поизящнее изменить подстроку
От: DemAS http://demas.me
Дата: 02.11.04 13:17
Оценка:
Здравствуйте, butcher, Вы писали:


Нет — еще раз — $begin и $ end — это целые числа — позиции символов, полученных с помощью index.
... << RSDN@Home 1.1.4 beta 3 rev. 220>>
Re[3]: Perl - поизящнее изменить подстроку
От: butcher Россия http://bu7cher.blogspot.com
Дата: 02.11.04 13:40
Оценка: 2 (1) +1
Здравствуйте, DemAS, Вы писали:

DAS> Нет — еще раз — $begin и $ end — это целые числа — позиции символов, полученных с помощью index.

#!/usr/local/bin/perl

my $source = "before inline test test after inline";
my $inline = "| inline |";
my ($begin, $end) = (14, 23);

print "$source\n";
substr($source, $begin, $end-$begin, $inline);
print "$source\n";

Нет ничего невозможного..
Re[4]: Perl - поизящнее изменить подстроку
От: DemAS http://demas.me
Дата: 02.11.04 14:24
Оценка:
Здравствуйте, butcher, Вы писали:

Спасибо. Похоже не внимательно читал документацию и про последний параметр забыл.
... << RSDN@Home 1.1.4 beta 3 rev. 220>>
Re: Perl - поизящнее изменить подстроку
От: Dalexand  
Дата: 02.11.04 15:30
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS> Есть исходная строка $source. Есть 2 целых числа — $begin и $end.

DAS> Есть подстрока $inline.
DAS> Надо заменить фрагмент $source начиная с $begin и заканчивая $end на $inline.

my $source = "1234567890";
my $inline = "inline";
my ($begin, $end) = (5, 8);

substr($source, $begin, $end - $begin) = $inline;
... << RSDN@Home 1.1.4 @@subversion >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.