Visualizzazione risultati 1 fino 7 di 7

Discussione: RegEx per splittare gli spazi non tra apici

  1. #1
    Guest

    Predefinito RegEx per splittare gli spazi non tra apici

    Ho provato a fare una RegEx per splittaregli spazi non tra apici:

    Diventa...
    "aaa 'a 'a a" ["aaa", "'a 'a", "a"]

    Ho buttato giù qualcosa ma non funge...
    [code]
    var exp = /(?!')\s(?!')/;
    [code]

    Mi restituisce ["aaa 'a 'a", "a"]... (splitta solo dopo l'ultimo apostrofo)

    Come posso strutturarla?

  2. #2
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    con javascript puoi far diventare un testo un vettore e poi separarlo con la funzione split()

    esempio:
    var str = "a,b'c'd,e'f";
    var arr = str.split("\'");
    document.getElementById("myDIV").innerHTML = arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3];

  3. #3
    Guest

    Predefinito

    ???
    Mi sa che o non capisco io che mi vuoi dire o non capisci tu che ho chiesto

    Come funziona split lo so bene, il problema è che non essendo troppo esperto di espressioni regolari vi chiedevo un aiuto su quella

  4. #4
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    scusami forse ho capito male io....

    se rileggo tu vuoi che qunado dividi la stringa tutte le lettere che abbiano un apice vengano raggruppate tra loro mentre quelle senza apice rimangano se stanti... come nell'esempio che hai esposto.

    mentre la funzione come da me indicata divide la stringa ogni qual volta trova un apice..che non e' la stessa cosa..

    ho provato a fare dei test .. ma non sono riuscito a venirne a capo.. a meno di scrivere una funzione dedicata allo scopo.
    ma penso che tu stia cercando un modo diretto di eseguire l'azione.

    quindi mi spiace ma per ora non ti sono di aiuto

  5. #5
    Guest

    Predefinito

    Grazie lo stesso

    Ora ho provato questo (che non funziona):
    /(?:(('[^']*){2})*)\s/

    "Penso" che in italiano voglia dire:
    Cerca uno spazio preceduto da due volte un'apice seguito da un qualsiasi carattere che non sia un'apice

    Così dovrebbe cercare tutti gli spazi preceduti da un numero pari di apici, che è quello che mi serve...

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Ma a cosa ti serve esattamente questo? Magari c'è un metodo migliore per ottenere il medesimo risultato che ti serve...

  7. #7
    Guest

    Predefinito

    Alla fine ho risolto con questa funzione:
    Codice:
    function split_no_quotes(string) {
        var splitted = string.split("'"),
            i,
            result = [];
        for (i = 0; i < splitted.length; i++) {
            if ((i % 2) == 0) {
                result = result.concat(splitted[i].trim().split(" "));
            }
            else {
                result[result.length] = "'" + splitted[i].trim() + "'";
            }
        }
        console.log(result);
    }

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •