Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Sistemi integrati - cercare stringa in stringa su arduino
Forum - Sistemi integrati - cercare stringa in stringa su arduino

Avatar
alex1995 (Normal User)
Expert


Messaggi: 277
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 20:29
Mercoledì, 11/02/2015
buona sera, devo vedere se una stringa contiene una stringa con arduino, ho provato con questa funzione che ho trovato su stack overflow:
Codice sorgente - presumibilmente C#

  1. int StringContains(String s, String search) {
  2.     int max = s.length() - search.length();
  3.     int lgsearch = search.length();
  4.  
  5.     for (int i = 0; i <= max; i++) {
  6.         if (s.substring(i, i + lgsearch) == search) return i;
  7.     }
  8.  
  9.  return -1;
  10. }



ma c' è qualcosa che non va perche avvolte se 2 stringhe sono diverse dice che sono uguali. potete aiutarmi?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6223
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:50
Mercoledì, 11/02/2015
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: https://piero.dev
PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 277
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 11:45
Giovedì, 12/02/2015
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.

Codice sorgente - presumibilmente Plain Text

  1. if(StringContains(Getrequest, "impostatemperatura1="))
  2.  {
  3.         digitalWrite(3, HIGH);
  4.  }
  5.  if(StringContains(Getrequest, "impostatemperatura2="))
  6.  {
  7.         digitalWrite(4, HIGH);
  8.  }



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 il 12/02/2015 alle 11:49
PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 155
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 16:02
Giovedì, 12/02/2015
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 il 12/02/2015 alle 16:09
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 17:35
Giovedì, 12/02/2015
Testo quotato

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.

Codice sorgente - presumibilmente Plain Text

  1. if(StringContains(Getrequest, "impostatemperatura1="))
  2.  {
  3.         digitalWrite(3, HIGH);
  4.  }
  5.  if(StringContains(Getrequest, "impostatemperatura2="))
  6.  {
  7.         digitalWrite(4, HIGH);
  8.  }



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?

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 277
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 20:33
Giovedì, 12/02/2015
grazie 1000 funziona, si devo per forza perche è una richiesta get via ethernet.

PM Quote