我对Arduino有一些关于如何匹配文本的问题。
我有:
String tmp = +CLIP: "+37011111111",145,"",,"",0
我正在努力匹配:
if (tmp.startsWith("+CLIP:")) {
mySerial.println("ATH0");
}
但这不起作用,我不明白为什么。
我尝试substring
,但结果是一样的。我不知道如何使用它或没有任何反应。
错误在哪里?
答案 0 :(得分:7)
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)
我还建议访问:
答案 1 :(得分:2)
我修改了来自gotnull的代码。感谢他把我带到了赛道上。
我只是限制了搜索字符串,否则子字符串函数并不总是返回正确答案(当子字符串未结束字符串时)。因为子字符串搜索总是在字符串的末尾。
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;
}
答案 2 :(得分:2)
//+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:
这就是我这样做的方式。希望它有所帮助。
答案 3 :(得分:2)
if (tmp.startsWith(String("+CLIP:"))) {
mySerial.println("ATH0");
}
只有在需要转换变量时才能使用带引号的字符串:)