Arduino如何将客户端接收的特定格式字符串拆分至三个字符串?
解决Arduino客户端字符串拆分问题
刚好做过类似的字符串解析需求,给你一个直接能用的实现方案,思路是先把客户端发来的完整字符串接收完毕,再根据固定的分隔符(,和*)拆分出三个目标变量:
WiFiClient client = server.available(); if (!client) { return; } // 1. 先接收完整的客户端字符串 String receivedData = ""; while (client.available()){ char d = (char)client.read(); // 遇到结束符'/'就停止接收 if (d == '/') { break; } receivedData += d; } // 2. 拆分字符串为三个目标变量 String String1 = ""; String String2 = ""; String String3 = ""; // 找到第一个分隔符','的位置 int commaIndex = receivedData.indexOf(','); // 找到第二个分隔符'*'的位置 int starIndex = receivedData.indexOf('*'); // 确保分隔符位置有效(避免格式错误导致的异常) if (commaIndex != -1 && starIndex != -1 && commaIndex < starIndex) { String1 = receivedData.substring(0, commaIndex); String2 = receivedData.substring(commaIndex + 1, starIndex); String3 = receivedData.substring(starIndex + 1); } else { // 如果格式不符合预期,可以在这里加错误处理,比如打印日志 Serial.println("Received data format error!"); } // 测试输出,验证结果 Serial.println("String1: " + String1); Serial.println("String2: " + String2); Serial.println("String3: " + String3);
代码说明:
- 首先完整接收数据直到遇到结束符
/,避免逐字符处理的碎片化问题 - 用
indexOf()定位两个关键分隔符的位置,确保格式正确后再截取子串 - 加入了简单的格式校验,防止非法数据导致程序崩溃
- 最后可以通过串口打印来验证拆分结果是否正确
内容的提问来源于stack exchange,提问作者Davide
相关产品推荐
相关产品推荐

