Portál AbcLinuxu, 6. května 2024 17:21


Dotaz: perl - rozdelení stingu na pismena a uložení do pole

4.12.2007 01:50 motorcb | skóre: 12
perl - rozdelení stingu na pismena a uložení do pole
Přečteno: 458×
Odpovědět | Admin
Zdravím. V perlu mam proměnou:

$pozdrav="Vitame vas na Nasem webu";

a potřeboval bych jednotlivé znaky z proměné uložit do pole.

print $pole[0]; #V
print $pole[1]; #i
print $pole[2]; #t
print $pole[3]; #a
...


Poradí nekdo? Diky moc :)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.12.2007 07:05 Jan Matis
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
my $test="toto je testovaci string"; my @array=split(//, $test);

foreach my $pom (@array) {

print "$pom \n"; }

zoul avatar 4.12.2007 09:11 zoul | skóre: 43 | blog: | Boskovice
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Jé, to jsem pako, to je úplně to stejný jako to moje :) Jak jsem viděl tři řádky kódu, automaticky jsem si myslel, že jde o něco složitějšího. Příště budu rychlejší!
4.12.2007 10:41 Jan Matis
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Pravdepodobne ano. Ja mam vacsinou 7:00 ceskeho casu este hlboku noc .. to len dnes som nemohol spat :)
zoul avatar 4.12.2007 09:09 zoul | skóre: 43 | blog: | Boskovice
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
my @pole = split(//, $pozdrav);
4.12.2007 11:39 ams
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jenom pro uplnost: /(.)/g je mnohonasobne rychlejsi nez split //,$_
4.12.2007 12:31 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
len pre úplnosť, reťazec 'abcd', cmpthese:
             Rate   split m/(.)/g
split    378788/s      --    -87%
m/(.)/g 2941176/s    676%      --
20.2.2008 18:37 Janda Martin
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
A co když je ten text s českými znaky v utf8? Takto to rozřeže všechny ěščřžýá atd. Jak to vyřešit?
20.2.2008 19:03 Janda Martin
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Tak si odpovím:
@znaky = split (/(?=\w)/,$reteec);
20.2.2008 19:10 Janda Martin
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Hm, stále mi to i tak vypisuje místo á nějaké paznaky. Když vytisknu celý řetězec tak je to ok, ale po znaku se to rozdělí na 2 patvary. Ať použiju use locale; use utf8; apod.
24.2.2008 13:15 MartinJanda
Rozbalit Rozbalit vše Re: perl - rozdelení stingu na pismena a uložení do pole
Nakonec jsem to vyřešil následovně: Lze použít modul String::Multibyte, který mimo jiných funkcí nabízí i náhradu za split pro multibytové řetězce.
use String::Multibyte;
$utf8 = String::Multibyte->new('UTF8');
$moje = "ěščřžýáíéů";
@pole = $utf8->strsplit("", $moje);
print Dumper(@pole);
a funguje to.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.