【问题标题】:How to match text in string in Arduino如何在Arduino中匹配字符串中的文本
【发布时间】:2011-02-17 13:33:52
【问题描述】:

我对 Arduino 有一些关于如何匹配文本的问题。

我有:

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

我正在尝试匹配:

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

但这不起作用,我不知道为什么。

我试过substring,但结果是一样的。我不知道如何使用它或没有任何反应。

哪里出错了?

【问题讨论】:

  • 第一行如何编译(我在 Arduiono/Wiring 中试过)?什么是剪辑?您可以发布工作/可编译代码(例如 mySerial 的声明)吗?
  • Peter 在这个例子中是行不通的。我只是举个例子,我从 Arduino 串行监视器得到。我用 substring 解决了我的问题,只是让任何人都知道,串行监视器中的 Arduino 不显示 \r 和 \n,这是我最大的问题。
  • @Min2liz 如果我的回答有帮助的话。你能接受它是正确的吗?

标签: arduino


【解决方案1】:
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】:

    我从 gotnull 修改了代码。感谢他让我走上正轨。

    我只是限制了搜索字符串,否则 substring 函数不会总是返回正确的答案(当 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;
    }
    

    【讨论】:

      【解决方案3】:
      //+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:
      

      这就是我的做法。希望对您有所帮助。

      【讨论】:

        【解决方案4】:
        if (tmp.startsWith(String("+CLIP:"))) {
            mySerial.println("ATH0");
        }
        

        你不能把带引号的字符串只需要转换变量:)

        【讨论】:

          猜你喜欢
          • 2015-06-11
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2022-11-30
          • 1970-01-01
          • 1970-01-01
          • 2020-11-19
          • 2020-12-04
          相关资源
          最近更新 更多