Как сопоставить текст в строке в Arduino - PullRequest
8 голосов
/ 17 февраля 2011

У меня есть некоторые проблемы с Arduino по поводу соответствия текста.

У меня есть:

String tmp = +CLIP: "+37011111111",145,"",,"",0

И я пытаюсь соответствовать:

if (tmp.startsWith("+CLIP:")) {
    mySerial.println("ATH0");
}

Ноэто не работает, и я понятия не имею, почему.

Я пытался substring, но результат тот же.Я не знаю, как его использовать, или ничего не происходит.

Где ошибка?

Ответы [ 4 ]

7 голосов
/ 16 февраля 2012
bool Contains(String s, String search) {
    int max = s.length() - search.length();

    for (int i = 0; i <= max; i++) {
        if (s.substring(i) == search) return true; // or i
    }

    return false; //or -1
} 

В противном случае вы могли бы просто сделать:

if (readString.indexOf("+CLIP:") >=0)

Я также рекомендовал бы посетить:

https://www.arduino.cc/en/Reference/String

2 голосов
/ 22 ноября 2015
if (tmp.startsWith(String("+CLIP:"))) {
    mySerial.println("ATH0");
}

Вы не можете поместить строку с кавычками, только вам нужно привести переменную:)

2 голосов
/ 16 июня 2015
//+CLIP: "43660417XXXX",145,"",0,"",0
if (strstr(command.c_str(), "+CLIP:")) { //Someone is calling
    GSM.print(F("ATA\n\r"));
    Number = command.substring(command.indexOf('"') + 1);
    Number = Number.substring(0, Number.indexOf('"'));
    //Serial.println(Number);
} //End of if +CLIP:

Вот как я это делаю.Надеюсь, это поможет.

2 голосов
/ 12 февраля 2013

Я изменил код из gotnull.Спасибо ему, что поставил меня на дорожку.

Я просто ограничил строку поиска, в противном случае функция подстроки не всегда возвращала правильный ответ (когда substrign не заканчивал строку).Потому что поиск подстроки всегда до конца строки.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...