Avatar billede daniel_d Nybegynder
11. september 2007 - 01:55 Der er 7 kommentarer og
1 løsning

indsætte ord mellem ord tilfældigt i en streng.

Hej eksperter

Nogen der har et bud på hvordan man indsætter et ord (variabel af typen string) tilfældigt i en anden variabel, også af typen string. Og variablen må ikke indsættes midt inde i et ord, dvs. det skal indsættes på et "blank space" og tilføje mellemrum på hver side af ordet.

Sidst og mindst ville det være fedt om et bud på hvordan mængden af de indsatte variabler kunne justeres i forhold til det samlede antal ord.

Jeg fisker ikke efter færdige løsninger, men skulle de dukke op modtager jeg dem med kyshånd :D
Avatar billede nielle Nybegynder
11. september 2007 - 07:03 #1
Skitseret algoritme:

1) Optæl hvor mange blanktegn der er i den streng, hvor der skal indsættes i.

Det kan du f.eks. gøre ved at løbe igennem strengen tegn for tegn og så tælle en counter-variabel op for hvert blanktegn du møder.

2) Læg 2 til; dette er hhv. starten og slutningen på din streng.

Dette skal du selvfølgelig kun gøre hvis den anden streng også må klistres på i starten eller i slutningen.

3) Lad os sige at der var 8 mellemrum inkl. start og slut (altså 6 rigtige blanktegn). Vælg et tilfældigt tal mellem 1 og 8.

Dette kan du gøre vha. rand() funktionen:

http://dk2.php.net/rand

4) Det tal du netop har fundet er det som det andet ord slaæ indsættes; 1 = så slaæ det indsættes i starten, 2 = så skal det indsættes på 1. mellemrum, osv.

Gentag løkken fra 1) - men stop når du er nået til det rigtige mellemrum.

5) ordet indsættes nu ved at du klipper strengen over på det pågældende sted, sætter det nye ord ind og klistre dem sammen igen:

Hvis positionen for mellemrummet f.eks. er 42:

$stringNy = substr($stringGammel, 0, 42) + $ditOrd + " " + substr($stringGammel, 42);

Hvis den indsættes i enden, skal det ekstre mellemrum dog indsættes før, men det høre under finpusning af algoritmen.
Avatar billede daniel_d Nybegynder
11. september 2007 - 12:00 #2
tanken var at indsætte min variabel tilfældige steder i strengen, og gøre det flere gange. Så dit eks. med start/slut kan nok ikke helt fungere i mit tilfælde.
Avatar billede nielle Nybegynder
11. september 2007 - 12:35 #3
Jamen så lader du bare bære med at tælle start og slut med - algoritmen er den samme alligevel.
Avatar billede nielle Nybegynder
18. september 2007 - 08:06 #4
Har du fået løst dette?
Avatar billede daniel_d Nybegynder
18. september 2007 - 10:16 #5
Nej ikke endnu. Må indrømme jeg har haft lidt travlt, så har ikke fået kigget så meget på det endnu, men smid gerne et svar - er sikker på dit forslag kan bruges eller bruges som udgangspunkt.
Avatar billede nielle Nybegynder
18. september 2007 - 18:03 #6
Jeg skal gerne hjælpe dig på vej med en løsning, men du skrev jo selv at du ikke nødvendigvis var interesseret i færdige løsninger. Og, man lærer nu mere af at prøve selv først. :^)
Avatar billede daniel_d Nybegynder
18. september 2007 - 18:56 #7
Det er rigtigt, men vil naturligvis være glad for al den hjælp jeg kan få. Du får dog point for den hjælp du allerede har givet, og så vil jeg lade det være op til dig om jeg skal have yderligere hjælp :)
Avatar billede nielle Nybegynder
18. september 2007 - 18:58 #8
Jeg hjælper som sagt gerne ... men jeg synes da at du skal prøve lidt selv først. Hvis du så løber ind i problemer skal jeg skam nok hjælpe. :^)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester