Avatar billede asppro Nybegynder
23. august 2001 - 12:22 Der er 9 kommentarer og
1 løsning

Hvordan ændre man tegn i en javascriptstreng

fx. følgende streng

gammel_streng = \'Her er en tekst \"bla\" den\';

teksten skal rettes til

ny_streng = \'her er en tekst xxx bla xxx den\';

evt. med en løkke der kan tage alle tegn som fx %#+\" etc.
Avatar billede roenving Novice
23. august 2001 - 12:26 #1
Regular expressions er løsningen -- der er jeg ikke skrap !-)
Avatar billede roenving Novice
23. august 2001 - 12:32 #2
Men du kan sagtens lave det uden med f.eks. for hvert tegn:

newStringArray = sourceString.split(\"\\\"\"); //splitter for \"
newString = newStringArray.join(\" xxx \");
Avatar billede asppro Nybegynder
23. august 2001 - 12:50 #3
Takker... Det var jo ikke så svært :-)
Avatar billede asppro Nybegynder
23. august 2001 - 13:45 #4
Kan man sætte en stopbetingelse på en whileløkke ?

fx.    while (der er et tegn x tilbage )
        {
          replace(\'\\x\',\'y\');
        }
Avatar billede roenving Novice
23. august 2001 - 14:18 #5
Den der split/join-ting kan ikke gøre det, så bliver du nødt til at gøre det anderledes:

while(streng.indexOf(\"\\\"\")>=0 && streng.indexOf(\"\\\"\")!=streng.length) {
  streng = streng.substring(0, streng.indexOf(\"\\\"\") - 1) + \" xxx \" + streng.substring(streng.indexOf(\"\\\"\") + 1, streng.length)
}

hth
jes
Avatar billede jakoba Nybegynder
23. august 2001 - 14:21 #6
Nej ikke umiddelbart. du kommer nok til at gøre noget lidt mere kompliceret.
fx:
<script language=\'javascript\'>

var dinstr = \"den bla streng bla der bla skal blabla fixes\";

var tmp = dinstr.lastIndexOf( \"bla\" );
if ( tmp > -1 ) {
    var gemstr = dinstr.substring(tmp); // fra og med sidste bla.
    dinstr = dinstr.substring(0,tpm);  // forenden af strengen.
    dinstr = dinstr.replace( /bla/g, \"ups\" ); // udskift alle bla med ups
    dinstr = dinstr + gemstr;          // læg bagenden på igen
};
alert( dinstr ); // forhåbentlig: \"den ups streng ups der ups skal upsbla fixes\"

</script>

mvh JakobA
Avatar billede asppro Nybegynder
23. august 2001 - 14:27 #7
Kan man forespørge om et tegn er indeholdt i en streng og få fx true eller false som svar ?
Avatar billede roenving Novice
23. august 2001 - 14:51 #8
Det er i princippet det der gøres med:
streng.indexOf(\"bla\"), den returnerer nemlig -1, hvis strengen ikke findes, så

if (streng.indexOf(\"bla\")==-1){
  ret = false
  }else{
  ret = true
}
Avatar billede asppro Nybegynder
23. august 2001 - 14:52 #9
Så er løsningen der :-)


<HTML>
<form action=\'default.asp\' name=\'check\' method=\'post\'>
<input type=\'text\' size=\'20\' name=\'gammel_streng\'>
<input type=\'text\' size=\'20\' name=\'ny_streng\'>
<input type=\'button\' value=\'Gem\' OnClick=\'java script:checkinput();\'>
</form>

<script language=\"javascript\" type=\"text/javascript\">

function checkinput(){

  while(document.check.gammel_streng.value.indexOf(\"\\\"\")>=0) { document.check.gammel_streng.value = document.check.gammel_streng.value.replace(\'\\\"\',\'2\');}
  document.check.ny_streng.value = document.check.gammel_streng.value;
}

</script>

</HTML>
Avatar billede roenving Novice
23. august 2001 - 14:53 #10
=;~}
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