Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 12 su 12

Hybrid View

  1. #1
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao, restando sul tema originale, condivido quanto indicato da ninja72 riguardo l'uso delle espressioni regolari. Penso sia la strada più appropriata nel caso in oggetto.

    Buona la sua soluzione ma (giusto per pignoleria ) concordo anche sul dissenso di ciro78; tecnicamente non serve andare a ripulire la stringa col replace, basterebbe impostare opportunamente la regexp per catturare solo ciò che serve, magari usando il metodo match().

    Quote Originariamente inviata da Annuitcoeptis
    Ho provato invano con:
    codice:
    tmp.indexOf('/|:|. -'));
    Direi che hai fatto un doppio errore

    Se intendi usare una regexp non devi inserirla tra apici (come una stringa) ma è necessario usare un'apposita sintassi. Puoi inserire il pattern tra due slash e/o usare il costruttore new RegExp(). Può essere utile (ri)consultare la documentazione indicata da ninja72

    Ad ogni modo, il metodo indexOf() NON funziona con le regexp. Se intendi usare quel metodo, dovresti fare più verifiche per trovare le diverse combinazioni di caratteri che puoi appunto specificare come stringhe.

    Meglio quindi usare un metodo che accetti le regexp.

    Sulla base di quanto già proposto da ninja72 (sebbene la sua soluzione sia comunque valida), personalmente andrei ad "ottimizzare" con l'uso di un unico match() e di un gruppo di cattura, in questo modo:

    codice:
    const description = document.querySelector('div.meta.tito div.evidence.isbd').textContent;
    const textArea = document.getElementById('dsArea0');
    const re = /^\s*(.+?)(?:\s?\/|\s?:|\.\s?-|\s*$)/m;
    const title = description.match(re)[1];
    textArea.value = title;

    Qui il significato della regexp:
    ^ dall'inizio della stringa
    \s* trova qualsiasi carattere di tipo "spazio" (compresi i caratteri di ritorno a capo) preso tra 0 e più volte, quanto più possibile
    (.+?) gruppo 1 di acquisizione. Trova qualsiasi carattere una o più volte, finché possibile ma il meno possibile in relazione a quanto richiesto a seguire
    (?:\s?\/|\s?:|\.\s?-|\s*$) gruppo non acquisito
    \s?\/|\s?:|\.\s?-|\s*$ trova una delle seguenti alternative; nota l'operatore logico | (OR) usato per considerare le diverse alternative
    \s?\/ 1) carattere di tipo "spazio" (che ci sia o no) seguito da / (slash) (il backslash è necessario per l'escape)
    \s?: 2) carattere di tipo "spazio" (che ci sia o no) seguito da : (due punti)
    \.\s?- 3) carattere . (punto), carattere di tipo "spazio" (che ci sia o no), carattere - (trattino)
    \s*$ 4) carattere di tipo "spazio", preso 0 o più volte, seguito dalla fine della stringa (o di fine riga se è applicato il flag "m"). Questo serve come ripiego per cui, se non sono trovate sotto-stringhe seguite dalle precedenti combinazioni, verrà comunque catturata la prima riga con testo, escludendo gli spazi iniziali e finali.
    /…/m flag "m" (multiriga). La ricerca viene effettuata riga per riga su una stringa che può avere dei ritorni a capo. Questo può essere necessario se la stringa originale inizia per caso con delle righe in cui potrebbero trovarsi solo degli spazi . Se nella prima prima riga non viene trovato nulla, la ricerca passa alla seconda riga e così via fino alla fine della stringa.

    match(re)[1] restituisce quindi il primo (e anche unico) gruppo catturato.

    Avere padronanza nell'applicare le espressioni regolari non è certo cosa semplice. Per questo penso sia utile fornire possibilmente anche una spiegazione dei relativi pattern proposti.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #2
    Grazie mille, KillerWorm, gentilissimo (funziona bene!), un po' complesso ma molto più esplicativo un esempio pronto all'uso di 10 pagine di teoria! Grazie ancora!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.