Avatar billede fizk Nybegynder
23. oktober 2005 - 16:13 Der er 8 kommentarer og
1 løsning

Split en streng?

Hej ..
Jeg er ude efter en funktion der kan dele en streng efter et vist antal tegn, eller endu bedre, efter et bestemt tegn!
Hvorfor? Fordi jeg har en side hvor man skal kunne vælge farver (RGB) og når min bruger så trykker på den farve han/hun gerne vil have, kommer det ud i formatet rgb(xx,xx,xx) og det vil jeg gerne have splittet, så jeg automatisk kan smide R-værdien over i ét tekst-felt, G-værdien over i et andet og (sjovt nok) B-værdien i et trdje!
Avatar billede softspot Forsker
23. oktober 2005 - 16:19 #1
Noget i stil med dette:

var iStart = rgbstring.indexOf('(');
var iEnd = rgbstring.indexOf(')');
var params = rgbstring.substr(iStart, iEnd-iStart).split(',');

var redValue = params[0];
var greenValue = params[1];
var blueValue = params[2];
Avatar billede nikolajdu Nybegynder
23. oktober 2005 - 16:20 #2
f = "ff,00,aa";
s = f.split(",");

alert(s[0]+" & "+s[1]+" & "+s[2]);
Avatar billede softspot Forsker
23. oktober 2005 - 16:24 #3
Et helt eksempel (hele strengen skal angives, altså rgb(xx,yy,zz) for at det fungerer):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>rgbextractor</title>
    <script type="text/javascript">
    function RGBXtract(obj) {
      if(obj) {
        var rgbstring = obj.value;
        var iStart = rgbstring.indexOf('(');
        var iEnd = rgbstring.indexOf(')');
        var params = rgbstring.substr(iStart+1, iEnd-iStart-1).split(',');

        obj.form.redValue.value = params[0];
        obj.form.greenValue.value = params[1];
        obj.form.blueValue.value = params[2];
      }
    }
    </script>
  </head>
  <body>
   
    <form id="Form1" method="post">
      <input type="text" value="rgb(10,20,30)" onblur="RGBXtract(this)"><br>
      <input type="text" name="redValue">
      <input type="text" name="greenValue">
      <input type="text" name="blueValue">
    </form>
   
  </body>
</html>
Avatar billede roenving Novice
23. oktober 2005 - 16:27 #4
-- og den kan optimeres en anelse:

    <script type="text/javascript">
    function RGBXtract(obj) {
      if(obj) {
        var rgbstring = obj.value.split(/[()]/);
        var params = rgbstring[1].split(',');

        obj.form.redValue.value = params[0];
        obj.form.greenValue.value = params[1];
        obj.form.blueValue.value = params[2];
      }
    }
    </script>
Avatar billede fizk Nybegynder
23. oktober 2005 - 16:52 #5
Softspot, du får den ...
Det virker som det skal, borset fra jeg lige blev nød til at lægge én til iStart, da den sendte ( og så værdien ;)
Avatar billede roenving Novice
23. oktober 2005 - 17:00 #6
Der er da også lagt en til iStart i softspots kode ?-)
Avatar billede softspot Forsker
23. oktober 2005 - 17:56 #7
Ja, jeg testede den her hos migselv og fandt den funktionel som den er indsat her, så det med den ene ekstra til iStart forstår jeg ikke helt...

Bort set fra det, så deler jeg gerne med roenving, da hans er meget mere fiks (også selvom jeg er lidt misundelig over at han kan regular expressions og jeg ikke kan)... :)
Avatar billede roenving Novice
23. oktober 2005 - 18:00 #8
Nej, jeg skulle bare vise den med regExp'en, som netop er meget fiks (hvordan det så er med performance, er en helt anden ting, men næppe et issue her !-)
Avatar billede softspot Forsker
24. oktober 2005 - 15:12 #9
Takker for point :)
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