Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ääkkös ongelma regexissä / replacessa

Synomi [01.12.2011 14:13:13]

#

Tarkotus muuttaa joka sana lauseessa alkamaan isolla alkukirjaimella ja poistaa muuten isot kirjaimet.

Tuohon löyty tuommonen sopiva funktio, joka toimi niinkuin pitääkin(ei ääkkösillä kumminkaan) kunnes lisäsin nuo ä,ö ja å kirjaimet tuonne perään.

Eli ongelmana on se
jos syötän esimerkiksi lauseen:
"abc efg äbc öfg äää ööö äbä öbå", niin se muuttuu:
"Abc Efg äBc öFg äää ööö äBÄ öBÅ".

Eli jos ääkköstä ennen on kirjain siitä tulee iso, jos väli niin se pysyy pienenä, sekä myös ääkkösten jälkein tulevista ei ääkkösistä tulee isot. Tossa koodi:

var firstName = syotettyLause.toLowerCase().replace(/\b[a-zåäö]/g, function
(letter) {return letter.toUpperCase();});

Voi olla tosiaan aika yksinkertainen ongelma, ei vaa oo pahemmin tullu käytettyä nuita säännöllisiä lauseita.

Voishan tän ohittaa jollain eri koodilla, mutta tarkoitus käyttää samaa koodia useisiin eri kenttiin myöhemmin.

Grez [01.12.2011 14:22:58]

#

Veikkaan että \b tulkitsee myös åäö epätekstiksi eli word boundaryksi.

Yucca [01.12.2011 17:34:43]

#

Grez kirjoitti:

Veikkaan että \b tulkitsee myös åäö epätekstiksi eli word boundaryksi.

Juuri siitä on kyse. Säännöllisten lausekkeiden käsite on JavaScriptissä – kielen määritelmän mukaan – täysin Ascii-pohjainen, mikä on tietysti aika lailla ristiriidassa sen kanssa, että toLowerCase() ja kumppanit toimivat Unicode-pohjalla.

Jos riittää käsitellä Ascii-kirjainten lisäksi suomalais-ruotsalaiset ääkköset, niin voidaan korvata replace-funktion ensimmäinen argumentti seuraavalla:

/([^a-zåäö]|^)[a-zåäö]/g

Ideana testata, onko kirjainta ennen jokin muu merkki kuin kirjain. Lisäksi pitää ottaa huomioon erikseen merkkijonon alku (^).

Mutta tuo ei sitten tietenkään selviä esimerkiksi nimistä Jürgen, René ja Иван. Se, mitä tässä oikein kannattaisi tehdä, riippuu hyvin paljon siitä, mitä varsinaisesti halutaan saada aikaan.

Varmaa on joka tapauksessa se, että jos kyse on käyttäjältä tulevasta syötteestä, siinä voi olla ihan mitä tahansa. Joten ensimmäiseksi kannattaisi arvioida, mitä dataa halutaan ylipäänsä hyväksyä.

Synomi [01.12.2011 18:04:20]

#

Joo pitääpä testailla huomenna, ois tuo varmaa ihan toimiva ratkaisu. Riittävä tuo että saa a-z sekä ääkköset tolla muutettua. Ensi alkuun tulee käyttöön nimi kentille, mutta tulee myös varmaan joillekki muille kentille myöhemmin. Samassa tulee kumminki erikoismerkkien poisto sekä trimmaus.

Jotain luin että unicode homman tarttis laittaa tohon että tunnistais ääkköset oikein, mutta empä kyllä ensi testauksella sitä ainakaan saanu toimii kun laitoin vaan /u johonki.

Edit: Jees kiitoksia, tuo näyttäis toimivan juuri niinkuin pitääkin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta