Avatar billede almaj Nybegynder
19. juni 2003 - 14:20 Der er 14 kommentarer og
1 løsning

ertatte og fjerne tegn fra tekstreng på en let måde

Hej
Jeg har en tekststreng som skal tjekkes og ændres således at den kun indeholder a-z, 0-9 og hvor ø=oe, æ=ae og å=aa, tegn der ikke er i denne liste skal bare fjernes.

Mit problem er at til at starte med at tjekket for om et bogstav er a-z ikke helt fungerer... er det nogen der kan hjælpe mig??

var ord ="";
var ord1 = "bil båd båt";
ord = ord1.toLowerCase();
var ord2 = "";

for (i = 0; i < ord.length; i++){
        a = ord.charAt(i);
        if (ord.charAt(i) == [a-z]||[0-9]) ord2 += a;
        if (ord.charAt(i) == "å") { a = "aa"; ord2 += a;}
        if (ord.charAt(i) == "æ") { a = "ae"; ord2 += a;}
        if (ord.charAt(i) == "ø") { a = "oe"; ord2 += a;}
        else { a = ""; ord2 += a;}
    }
    alert(ord2);
Avatar billede roenving Novice
19. juni 2003 - 14:50 #1
æøå:

function repl(text){
text = text.replace(/ø+/g,"oe");
text = text.replace(/å+/g,"aa");
text = text.replace(/æ+/g,"ae");
return text
}

Og så må du jo nok:

function stripChar(text){
  var tegn = "abcdefghijklmnopqrstuvwxyz0123456789";
  text = repl(text);
  var nytext = "";
  for (i=0;i<text.length;i++){
    if (tegn.indexOf(text.charAt(i))>-1)nytext+=text.charAt(i)
  }
  return nytext;
}

hth
jes
Avatar billede Slettet bruger
19. juni 2003 - 14:51 #2
Det gøres nemmest med regular expressions:

function formaterStreng(str) {
  str = str.toLowerCase();
  str = str.replace(/[^a-z0-9æøå]/g, "");
  str = str.replace(/æ/g, "ae");
  str = str.replace(/ø/g, "oe");
  str = str.replace(/å/g, "aa");
  return str;
}

Denne funktion fjerner alle tegn, der ikke er a-å eller 0-9, og laver derefter æ, ø og å om til henholdsvis ae, oe og aa.
Avatar billede roenving Novice
19. juni 2003 - 14:51 #3
-- og du vil sikkert have mellemrum med, så den må tilføjes i tegn ...
Avatar billede roenving Novice
19. juni 2003 - 14:55 #4
Og så uden at ændre store/små bogstaver ...
(bortset fra æøå !-)

function repl(text){
text = text.replace(/[^a-z0-9æøå ]+/gi, "")
text = text.replace(/ø+/gi,"oe");
text = text.replace(/å+/gi,"aa");
text = text.replace(/æ+/gi,"ae");
return text
}
Avatar billede almaj Nybegynder
19. juni 2003 - 14:56 #5
kunne du phoenixv ikke lige lave et svar, således at jeg kunne give dig nogen point? Det virker helt perfekt :-) mange tak
Avatar billede olebole Juniormester
19. juni 2003 - 15:48 #6
<ole>

I JavaScript må man ikke bruge æ, ø og å - men bør bruge \346, \370 og \345.
Det gælder naturligvis også i RegExp under JavaScript  :)

/mvh
</bole>
Avatar billede almaj Nybegynder
19. juni 2003 - 16:18 #7
Skal man så skrive eksempelvis

function repl(text){
text = text.replace(/[^a-z0-9\346\370\345 ]+/gi, "")
text = text.replace(/\345+/gi,"oe");
text = text.replace(/\346+/gi,"aa");
text = text.replace(/\370+/gi,"ae");
return text
}
??? og hvilket tal svarer til hvilket bogstav?

Er der derudover nogen som kan forklare forskellen på gi og g i udtrykkene?
Avatar billede roenving Novice
19. juni 2003 - 16:22 #8
g = global
i = (case-)insensitive
Avatar billede roenving Novice
19. juni 2003 - 16:24 #9
Og ole angav dem selvfølgelig i den rigtige rækkefølge, så du skal:

text = text.replace(/\370+/gi,"oe");
text = text.replace(/\345+/gi,"aa");
text = text.replace(/\346+/gi,"ae");
Avatar billede olebole Juniormester
19. juni 2003 - 16:25 #10
almaj >> Du kan downloade en lille converter, jeg engang skrev her:
  http://tjenester.dk/x-codes.dk/eksperten/oktal_konverter/
Avatar billede almaj Nybegynder
19. juni 2003 - 16:46 #11
mange mange tak for hjælpen, er der ikke nogen af jeg der kunne lave et svar, således at jeg kunne give point og lukke spørgsmålet?
Avatar billede roenving Novice
19. juni 2003 - 16:51 #12
-- og hvis du så også vil beholde de store bogstaver for ÆØÅ:

function repl(text){
text = text.replace(/[^a-z0-9\346\370\345 ]+/gi, "")
text = text.replace(/\345+/g,"oe");
text = text.replace(/\346+/g,"aa");
text = text.replace(/\370+/g,"ae");
text = text.replace(/\330+/g,"Oe");
text = text.replace(/\305+/g,"Aa");
text = text.replace(/\306+/g,"Ae");
return text
}
Avatar billede roenving Novice
19. juni 2003 - 17:03 #13
Jamen, jeg takker da for points, men havde da regnet med, at der også skulle falde noget af til phoenixv ...
Avatar billede Slettet bruger
20. juni 2003 - 09:15 #14
Det gør ikke noget. :)
Avatar billede roenving Novice
21. juni 2003 - 14:23 #15
;O)
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