Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Perl] Замена определенного по счету символа (https://forum.antichat.xyz/showthread.php?t=199117)

apofis 25.04.2010 14:01

[Perl] Замена определенного по счету символа
 
Добрый день!

Как можно заменить в тексте определенный по счету символ?


Например, вот текст:
Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию.

Как заменить десятый по счету пробел на любой другой символ?

Kaimi 25.04.2010 14:03

http://perldoc.perl.org/functions/substr.html

apofis 25.04.2010 14:11

Я в том смысле, что неизвестно какой по счету символ в тексте этот десятый пробел.

Deathdreams 25.04.2010 15:12

PHP:
http://php.net/manual/en/function.substr-replace.php

psyx 25.04.2010 18:12

Используй регулярные выражения, в твоем случае поиск n-го совпадения:
http://perl.find-info.ru/perl/015/search/1.htm

eLWAux 25.04.2010 20:37

PHP код:

$a 'qwertyuiopasdfghjklzxcvbnm';
 print 
$a."\n";
 print 
substr($a09) . '!' substr($a10length($a)); 

если заранее знаешь какие символы заменять надо, заменяй регуляркой

taxpayer 25.04.2010 21:37

>"Как заменить 10й пробел в строке?"
А то что-то вы странно не понимаете как обстоит вопрос


Я на низком уровне знаю перл, мб это как-то близко к делу
Цитата:

use warnings;
use strict;

my $a = 'A B C D E F G H I J K L M';
my $i = 7; # седьмой пробел

$a =~ s!(\s)!_a_($1, --$i)!eg;
print $a;

sub _a_{ $_[1] ? return $_[0] : return 'S' }

life_glider 25.04.2010 21:58

PHP код:

#!/usr/bin/perl 
$txt="dgas  adg              dgasdg asdg  adsg   a      dga   sdga      sdg     adsg    asdg  asgd";
@
arr=split(" ",$txt);
if(
scalar @arr 10)
{
    print 
join(' ',@arr[0..9]).'!'.join(' ',@arr[10..$#arr]);
}
else
{
    print 
$txt;


вот так например. Только он почему то переносы строк убивает.

krypt3r 26.04.2010 06:54

Код:

$str =~ s{(\s)}{++$count == 10 ? '[SPACE]' : $1;}ge;
?

taxpayer 26.04.2010 15:13

krypt3r, не проще использовать декремент? зачем лишние сравнения?


Время: 08:57