16. januar 2005 - 23:18Der er
6 kommentarer og 1 løsning
Klippe data ud af streng
Jeg skal have klippet dele af følgende tekststreng (og en masse der ligner) ud: "Track 23 - A-13 'Rizumu nomi'.mp3" Jeg skal bruge track nummeret (23) og track navnet (A-13 'Rizumu nomi'). Track nummer kan være alt fra 01 til 99 Track navnet kan bestå af følgende tegn: a-z, A-Z, 0-9 og *",.:;'-_/!?()[]&~^ Hvis det kan lade sig gøre ville det være fedt hvis _ samtidig kunne laves om til mellemrum. Scriptet er i perl.
Den tager kun track nummer og "A-??" og gemmer i %hash, den tager ikke det mellem plingerne ('). Det er vigtigt at det også kommer med og er i en variabel.
En gang til: Jeg har nogle (lovlige) musik numre med underlige tegn i: Track 12 - II Air [Orhestral Suite No. 3 in D Major, BWV.106].mp3 Track 23 - A-13 'Rizumu nomi'.mp3 Track 32 - B-4 Guitarr Piano (Sabishiku).mp3 07-silent_wonderland_~rem_sleep_.mp3
Ud af dem skal jeg have track nummeret og track titlen i en variabel. Basically: Søg gennem teksten til der findes et tal. output det i en variabel. Hop til efter dash (-), hvis der er mellemrum efter dash, spring det over, klip alt indtil ".mp3" og output i en variabel. s/variabel/array/g
Bonuspoint (20) gives for at konvertere underscores som i filnavn 4 til mellemrum.
Hov, havde læst det som du kun ville have A-?? med: Den her gør det godt nok af 2 omgange - kan muligvis få grejet _ replace med ind i den første...
$tracks = qq{ Track 12 - II Air [Orhestral Suite No. 3 in D Major, BWV.106].mp3 Track 23 - A-13 'Rizumu_nomi'.mp3 Track 32 - B-4 Guitarr_Piano (Sabishiku).mp3 Track 07 - silent_wonderland_~rem_sleep_.mp3 };
%hash = $tracks =~ /Track (\d+) - ([^\n]+)\n/g;#<-- smid track# og navn ind i hash #map { s/_/ /g } values %hash;#<--erstat _ med space i values; print map { "$_ -> $hash{$_}\n" } keys %hash;#<--udskriv alle værdier
Top Dollar! Virker lækkert. Ingen grund til at gøre den mere effektiv, hastighed er ikke vigtig, og så kan jeg bedre fatte hvad der sker ;-) Smid et svar.
Og kom forresten til at tænke på: Er dine tracknumre unikke? Lige nu smider den jo værdierne ind i en hash med tracknummer som key. Dvs hvis du har flere numre med samme tracknummer går der ged i den.
Alternativt kan du smide resultaterne i et array eller noget i stedet for.
Ja, det er de, så ingen problemer der. Tak for hjælpen ^_^
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.