Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    ricerche case sensitive con indexOf()

    Salve a tutti, in queste poche righe di codice, non riesco a capire come devo fare se termine=milano cerca non me lo trova (= -1) se invece termine=Milano ovviamente me lo trova,

    stringa = "il comune di Milano è ben strutturato dal punto di vista ricreativo."
    termine = "milano";

    cerca = stringa.indexOf(termine);

    ho provato ad aggiungere l'istruzione .toLowerCase() ma se la metto dopo stringa, mi tramuta tutta la stringa in minuscola, e quindi se termine=Milano, succede l'inverso.

    Come posso fare???

    Grazie, ciao.

  2. #2
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    soluzione veloce ma sporca:

    cerca = (stringa.toLowerCase()).indexOf(termine.toLowerCas e());

    cioè riduci entrambe le stringhe a lower case



    soluzione figa:

    usa le Regular Expressions
    Cacca!

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    con un espressione regolare (insensitive) allora

    codice:
    <script type="text/javascript">
    // <![CDATA[
    
    stringa = "il comune di Milano è ben strutturato dal punto di vista ricreativo."
    re = /MiLaNo/i;
    
    if (re.test(stringa)) {
       alert("ho trovato un'occorrenza");
    }
    else {
       alert("nessuna occorrenza trovata");
    }
    
    // ]]>
    </script>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    e se

    re = /MiLaNo/i;

    fosse ricavato da un campo di testo tipo

    re = termine.value

    ???

    thnx.

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    variabile = termine.value;
    re = new RegExp("/"+variabile+"/", "i");
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    Vi ringrazio molto per il vostro intervento, non sapevo nemmeno che esistessero o che cosa fossero le espressioni regolari, così mi sono studiato un pò di documentazione, purtroppo devo farvi notare che poche proprietà supportano questo metodo, ad es:

    re = /MiLaNo/i;

    se io voglio formattare la stringa in grassetto con:

    re.big();

    mi restituisce l'errore: "metodo o proprietà non supportati dall'oggetto".

    Forse non ho cercato abbastanza, se magari potete indicarmi della documentazione più complessa ve ne sarei infinitamente grato.

    Grazie, ciao.

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    ma cosa stai cercando di fare esattamente?
    Una specie di "trova in pagina"?

    guarda se
    questo post può tornarti utile, altrimenti spiegaci cosa cerchi di ottenere
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    grazie per il tuo interesse fcaldera.
    ho costruito un piccolo e semplice motore di ricerca che prende una stringa da una cella di un database, trova il termine, e riporta solo una frase evidenziandola in grassetto.
    sono riuscito grazie ai vostri consigli a fare tutto, tranne a riportare il termine cercato in grassetto, questo è una parte di script:

    codice:
    <%
    	'formatto il campo per i risultati abbreviati, la stringa deve essere unica senza a capo e senza apice
    	termineX = replace(recordset("descrizione"),vbCrlf,"")
    	termineX = replace (termineX,Chr(34),"'")
    	%>
    
    <script language="javascript1.2" type="text/javascript">
    
    stringa = "<%= termineX %>";
    termine = /<%=termine%>/i;
    
    lunghTermine = termine.length;
    
    'restituisce la posizione del termine, (qui va messo un controllo)
    ponr = stringa.search(termine);
    
    'finchè esiste un termine nella stringa elenca da punto a punto (prendi frase)
    while (ponr != -1) {
    	punto2= stringa.indexOf(".",ponr);
    	punto1= stringa.lastIndexOf(".",ponr);
    	risultato = stringa.substring(punto1+1,punto2);
    	risultato = risultato.replace(termine,termine.big());'QUI SBAGLIO
    	document.write("..."+risultato+"...
    ");
    	ponr = stringa.indexOf(termine, ponr+lunghTermine);'sposta il cursore dal termine cercato in poi
    	};
    
    </script>
    che ne dici??? da perfezionare indubbiamente, ma nello stesso tempo semplice.

    dove sbaglio ovviamente ho provato anche con

    codice:
    risultato = risultato.replace(termine,(""+termine+""));
    ma mi restituisce il termine con /termine/i

    sto leggendo qualche tutorial in inglese (che ho poca confidenza), e sto elaborando il primo caso usando RegExp.

    Grazie, ciao.

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    se guardi bene il codice del link che ti ho postato il meccanismo è analogo... io racchiudo il termine trovato in uno span, tu lo devi racchiudere un un tag che dia con i css la formattazione che desideri
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372

    Re: ricerche case sensitive con indexOf()

    Originariamente inviato da DarioMarco
    Salve a tutti, in queste poche righe di codice, non riesco a capire come devo fare se termine=milano cerca non me lo trova (= -1) se invece termine=Milano ovviamente me lo trova,

    stringa = "il comune di Milano è ben strutturato dal punto di vista ricreativo."
    termine = "milano";

    cerca = stringa.indexOf(termine);

    ho provato ad aggiungere l'istruzione .toLowerCase() ma se la metto dopo stringa, mi tramuta tutta la stringa in minuscola, e quindi se termine=Milano, succede l'inverso.

    Come posso fare???

    Grazie, ciao.
    Forse sto per dire una cavolata.

    indexOf(termine) ritorna la posizione di "termine".
    Se ha il testo "normale" nella stringa A che lo copi nella stringa B che passi la B in minuscole e fai la ricerca. La posizione data da indexOf vale anche per la stringa A.
    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

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