Avatar billede magic-mouse Novice
31. januar 2011 - 10:33 Der er 10 kommentarer og
1 løsning

Hjælp med finpudsning af URL skriver

Jeg har et lille javascript som omskriver titlen på en webside til URL venlig.

eks.: Dette er en lille test.
bliver til: dette-er-en-lille-test

Mit problem er at hvis jeg skriver eks.
eks.: Dette er en test - 2.
blvier til: dette-er-en-test---2

Jeg kan ikke fjerne - med reg ex, da jeg så får detteerentest istedet.

Jeg ønsker derfor at _ og - skal skrives men der må kun findes 1-/_ efter hinanden.

Javascriptet vedlægges ved forspørgsel.
Avatar billede johny Nybegynder
31. januar 2011 - 10:41 #1
Nu ved jeg jo ikke hvordan du omskriver det til at starte med, for det kan jo også gøres med regex, men hvis du bare vil fikse tripple "-", så gøres det med en simpel replace:

"-{2,}", "-"
Avatar billede magic-mouse Novice
31. januar 2011 - 10:54 #2
Den ser sådan her ud. Kunne sikkert effektiviseres men den gør hvad den skal.

function makeLowercase(obj_from, obj_to) {

var characters=/[^A-Za-z_0-9_\s_-]/g;
var blankspace=/\s/g;

document.form1.txtPageName.value = document.form1.txtTitle.value.toLowerCase().replace(blankspace,"-").replace(characters,"");

}
Avatar billede johny Nybegynder
31. januar 2011 - 10:57 #3
ahh, så kan det bare gøres direkte i din originale kode:
.replace("(?:" + blankspace + ")+","-")
Avatar billede johny Nybegynder
31. januar 2011 - 10:59 #4
characters ville jeg personligt nok også ændre til [^\s\w-]
Avatar billede magic-mouse Novice
31. januar 2011 - 12:18 #5
Det virkede overhovedet ikke. Jeg har opsat 2 eksempler på min side. http://www.magic-mouse.net/title-test.aspx Eks. gør det den skal bortset fra hvis man anvender - så kommer de med.

Nummer 2 erstattes mellemrum ikke med det de skal.
Avatar billede johny Nybegynder
31. januar 2011 - 13:23 #6
Ah, my bad, er fordi jeg er vant til i C# at der ikke skal være specielle karakterer i starten / slutningen af en regex string.

Men sæt blankspace til "/\s+/g" i stedet, så skulle den være der.
Avatar billede johny Nybegynder
31. januar 2011 - 13:23 #7
(og drop det her '.replace("(?:" + blankspace + ")+","-")' )
Avatar billede magic-mouse Novice
31. januar 2011 - 13:57 #8
Hej har lavet en ny med dine korrigeringer.

Må sige at koden er en del finere nu.

Men indtaster man "Hello World - 2!" får man stadig "hello-world---2". Hvor ønsket resultat er "hello-world-2".
Avatar billede johny Nybegynder
31. januar 2011 - 14:09 #9
Ah, det er min fejl igen det her. :$ Må nok hellere lade være med at lave forhastede indlæg mens jeg er på arbejde en anden gang. :)

var blankspace=/[\s-]+/g;

Den skulle gøre det. "-" skal muligvis escapes "\-".
Avatar billede magic-mouse Novice
31. januar 2011 - 14:19 #10
Sådan ... du styrer.
Smid et svar så får du dine velfortjente points.
Avatar billede johny Nybegynder
31. januar 2011 - 15:43 #11
Var så lidt. :)
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
Kurser inden for grundlæggende programmering

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