második magánhangzó megtalálása Perlben

Ahoj!

Adott egy minta:

b|c|d|f|g|gy|h|j|k|l|ly|m|n|ny|p|q|r|s|t|ty|v|w|x|z

és a felhasználótól bekérek egy szót, mondjuk: pálinkázó

a cél az lenne, hogy kiszűrjem a magánhangzókat, ki tudjam íratni, hogy megtalált Magánhangzók, darabszám, felsorolás, és megtaláljam a második magánhangzót, tudjak vele utána dolgozni. Ahol el vagyok akadva, és eddig nem találtam megoldást, az az utf8-ban kódolt karakterek kezelése, oda-vissza kódolása talán a

use Encode qw(encode decode);

meg ilyenek használatával is

Hozzászólások

Kitörlöd a mássalhanzókat és a maradékot analizálgatod.

Így elsőre nem tűnik agysebészetnek

Oksa, csináld meg 8-bitesen, és idézd be az eredményt, segítek hozzátenni az utf8-ságot.

Szerkesztve: 2025. 03. 10., h – 09:20

csak igy gyorsan, reggeli kave elott:

$ php -r '$foo = "Adjál elém pikírt, bohó költőt, unt, bús tüzűt!."; var_dump($foo); $m = preg_match_all("#[aeiouöüóőú]#ui", $foo, $bar); if ($m) { print_r(reset($bar)); }'
string(57) "Adjál elém pikírt, bohó költőt, unt, bús tüzűt!."
Array
(
    [0] => A
    [1] => e
    [2] => i
    [3] => o
    [4] => ó
    [5] => ö
    [6] => ő
    [7] => u
    [8] => ú
    [9] => ü
)
Szerkesztve: 2025. 03. 11., k – 07:02

Itt vagyok elakadva (a távíró szóval tesztelem, és a chatbotok se adtak jó megoldást...)

use Encode qw(decode encode);
$consonants="b|c|d|f|g|gy|h|j|k|l|ly|m|n|ny|p|q|r|s|t|ty|v|z";
print "Írj: ";
$word=<STDIN>;chomp $word; $word="távíró";
$v = $word =~ s/$consonants//gr;
print $v,"\n";

@myvowels=split(//,$v);
print "$myvowels[1]\n"

Írj be neki egy ötöst. Igazából ilyesmit lehetne:


#!/usr/local/bin/perl

use utf8;
use open qw(:std :encoding(utf8));

use strict;
use warnings;

my $consonants="b|c|d|f|g|gy|h|j|k|l|ly|m|n|ny|p|q|r|s|t|ty|v|z";

my $word;
# print "Írj: ";
# $word=<STDIN>;
# chomp $word;                         
$word="távíró"; # utf8 74 c3a1 76 c3ad 72 c3b3
                                       
my $v = $word;                         
$v =~ s/$consonants//g;                
print "Orig='$word', vowels='$v'\n";   
                                       
my @myvowels= split(//,$v);              
foreach my $i (0..$#myvowels) {
    print "$i $myvowels[$i]\n";
}