【发布时间】:2020-07-06 14:27:50
【问题描述】:
我想提取整个字符串的任意部分并通过Serial.println()发布。
我遇到的来源问题是字符串值(A,B,C)是变量,因此是“未知的”。它与定义的终止符“-”和“END $”混淆。我找不到合适的锚点来获取我想要的字符串的确切部分。如果这些字符串值不存在,我可以:“curD = 'Data: String1 A'”与“curD = 'String1'”。我只想要“String1 A”、“String2 B”或“String3 C”。
示例 A、B、C 是 int、float 或可变/随机长度的字符串。
这是我目前所拥有的:
char headComputerData[] = "String1 - "; // test; can be String1 -, String2 - etc, to get the next adjacent string sequence till " -"
//char headComputerData[] = "Computer Data: "; // the prefix of the data value
char dashTerminator[] = " -"; // one possible suffix of a value
char dollarTerminator[] = " END $ "; // the other possible suffix of a value
int firstIndexComputerData; // index into inputStringPC of the first char of the value
String inputStringPC = "Computer Data: String1 A - String2 B - String3 C END $ ";
firstIndexComputerData = inputStringPC.indexOf(headComputerData);
firstIndexComputerData += strlen(headComputerData); // firstIndex is now the index of the char just past the head.
String compData = inputStringPC.substring// string everything between
(
firstIndexComputerData, //first index
inputStringPC.indexOf(dashTerminator, firstIndexComputerData) //last index (relative)
);
Serial.println(compData);
谢谢:)
无限制
【问题讨论】:
-
"我找不到合适的锚点来获取我想要的字符串的确切部分。" - 这是问题的核心吗?如果是这样,您不能删除与问题无关的所有内容,并在程序中只留下一个简短的示例吗?我很肯定在这种情况下它会很快得到解决。
-
谢谢,我已经删除了不必要的代码行。
-
好!尝试提出问题的minimal reproducible example。举一个您无法解决的简单案例并将其硬编码为示例。在这样的示例中,
Serial.println()没有位置。只需处理手头的问题。
标签: c++ string arduino substring indexof