Oppure

Loading
11/02/15 19:29
alex1995
buona sera, devo vedere se una stringa contiene una stringa con arduino, ho provato con questa funzione che ho trovato su stack overflow:
int StringContains(String s, String search) {
    int max = s.length() - search.length();
    int lgsearch = search.length();

    for (int i = 0; i <= max; i++) {
        if (s.substring(i, i + lgsearch) == search) return i;
    }

 return -1;
}


ma c' è qualcosa che non va perche avvolte se 2 stringhe sono diverse dice che sono uguali. potete aiutarmi?
aaa
11/02/15 19:50
pierotofy
Non capisco, stai cercando una funzione che controlli se una stringa è contenuta in un altra, oppure se due stringhe sono uguali?

Dopo aver chiarificato questo punto, potresti darci un esempio di input che non funziona?
Il mio blog: piero.dev
12/02/15 10:45
alex1995
cerco una funzione che controlli se una stringa è contenuta in un altra, ma una stringa per intero non solo una parte della stringa come credo che faccia quella funzione.

 if(StringContains(Getrequest, "impostatemperatura1="))
 {
 	digitalWrite(3, HIGH);
 }
 if(StringContains(Getrequest, "impostatemperatura2="))
 {
 	digitalWrite(4, HIGH);
 }


questo è parte del progetto di domotica e nella richiesta get c' è la temperatura da impostare quindi non posso comparare le 2 stringhe in modo esatto allora dovrei aggiungere un if ad ogni grado :S.
Ultima modifica effettuata da alex1995 12/02/15 10:49
aaa
12/02/15 15:02
torn24
Ciao, bisogna non mischiare array di char con oggetti String, se le tue stringhe sono "String nome" non occorre usare la funzione
da te mostrata, perché il metodo indexOf() fa esattamente la stessa cosa, restituisce la posizione della prima occorrenza se trova la stringa o restituisce -1 se non trova niente.


if(Getrequest.indexOf("temperatura1=";)!=-1)
digitalWrite(3,HIGH);


-------------------------------------------
le tue condizioni sono quasi sempre true, in C, falso è zero 0, diverso da zero è true

if(StringContains(Getrequest, "impostatemperatura1=";)) // se maggiore di zero è true se è -1 è true
{
digitalWrite(3, HIGH);
}


Ultima modifica effettuata da torn24 12/02/15 15:09
aaa
12/02/15 16:35
Roby94
Postato originariamente da alex1995:

cerco una funzione che controlli se una stringa è contenuta in un altra, ma una stringa per intero non solo una parte della stringa come credo che faccia quella funzione.

 if(StringContains(Getrequest, "impostatemperatura1="))
 {
 	digitalWrite(3, HIGH);
 }
 if(StringContains(Getrequest, "impostatemperatura2="))
 {
 	digitalWrite(4, HIGH);
 }


questo è parte del progetto di domotica e nella richiesta get c' è la temperatura da impostare quindi non posso comparare le 2 stringhe in modo esatto allora dovrei aggiungere un if ad ogni grado :S.


No no, un attimo, tu passi i dati tra microcontrollori mediante stringhe?
aaa
12/02/15 19:33
alex1995
grazie 1000 funziona, si devo per forza perche è una richiesta get via ethernet.
aaa