Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Scusami ma non ti seguo. Non mi è chiaro cosa ti serve ottenere.
    Il carattere ";" è visto semplicemente come carattere separatore in quel contesto. In quel caso devi conoscerlo tu a priori per poterlo usare sullo split. Non vedo con quale criterio tu possa definire tale carattere come "elemento da cui è stato estratto" l'array.

    Mi sfugge qualcosa. Forse l'esempio che hai riportato non è adatto al tuo caso. Prova a fare degli esempi verosimili contestualmente alla tua situazione.

    La cosa che dici di voler ottenere è un mix tra un oggetto e un array, ma chiaramente la struttura e la sintassi non sono propriamente valide.
    Puoi chiarire meglio?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Prova cosi.

    codice:
    <script>
    var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
    var re = /\s*(;)\s*/;
    var nameList = names.split(re);
    //alert(nameList);
    for (i=0;i<=nameList.length-1;i++) {
     alert(nameList[i]);
    }
    </script>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    codice:
    <script>
    var names = "Harry Trump DO Fred Barney RE Helen Rigby DO Bill Abel DO Chris Hand ";
    var re = /\s*(DO|RE)\s*/;
    var nameList = names.split(re);
    //alert(nameList);
    for (i=0;i<=nameList.length-1;i++) {
     alert(nameList[i]);
    }
    </script>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Ci provo...
    A mio parere dovresti prima di tutto capire come immagazzinare l'output, cioè le varie parti estratte dalla stringa.
    La tua pseudo-struttura andrebbe rivista meglio:
    codice:
    [
      {
      "": ["parola parola"]
      },
      {
      "DO": ["parola parola"]
      },
       {
      "RE": ["parola parola"]
       }
    ]
    Considerando come array i blocchi di parentesi quadre e come oggetti i blocchi di parentesi graffe, a mio parere più che usare degli oggetti in quel modo (con cui potresti avere dei problemi nella rappresentazione delle chiavi se ad esempio si tratta di stringhe vuote) potresti usare invece un semplice array bidimensionale (in sostanza un array di array), dove il primo elemento dell'array interno rappresenta una "stringa chiave" (chiamiamolo così, meglio che "separatore") mentre il secondo rappresenta la relativa "stringa associata" (cioè la parte di stringa che segue di fatto la chiave fino a trovare un'altra chiave o la fine della stringa).

    Direi che l'output, partendo dal tuo esempio, potrebbe quindi essere esemplificato in questo modo:
    codice:
    [
      ["", "parola parola"]
      ["DO", "parola parola"]
      ["RE", "parola parola"]
    ]
    Per ottenere questo output dalla stringa di partenza, potresti usare dei gruppi di cattura sulla tua espressione regolare.
    Qui uno script d'esempio:
    codice:
    var str = "Ma quante LA braccia ti hanno MI stretto, tu lo RE sai per diven MI tar quel che LA sei che importa MI tanto tu non RE me lo di MI rai, purtroppo."
      , keys = "DO|RE|MI|FA|SOL|LA|SI"
      , reg = new RegExp("(?:^| *("+keys+") *)((?:.(?!"+keys+"))*)", "g")
      , output = []
      , grp
    ;
    
    while (grp = reg.exec(str)){
      output.push([grp[1]||"", grp[2]||""]);
    }
    In sostanza la regexp cattura i due gruppi, dove il primo restituisce un valore chiave inserito tra gli OR della stringa keys, mentre il secondo restituisce il resto della stringa che segue quel valore chiave (fino a trovarne un altro).

    Il tutto poi va iterato col metodo exec() che restituisce appunto i vari match e dove si può costruire l'array output.

    Vedi se può andar bene.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.