Hier ist die Arduino- Methode, um eine Zeichenfolge als Antwort auf die Frage "Wie wird eine Zeichenfolge in Teilzeichenfolgen aufgeteilt?" als Duplikat der vorliegenden Frage deklariert.
Das Ziel der Lösung besteht darin, eine Reihe von GPS- Positionen zu analysieren, die in einer SD-Kartendatei gespeichert sind. Anstatt einen String empfangen zu lassen Serial
, wird der String aus einer Datei gelesen.
Die Funktion StringSplit()
parst einen String sLine = "1.12345,4.56789,hello"
in 3 Strings sParams[0]="1.12345"
, sParams[1]="4.56789"
& sParams[2]="hello"
.
String sInput
: die zu analysierenden Eingabezeilen,
char cDelim
: das Trennzeichen zwischen den Parametern,
String sParams[]
: das Ausgabearray von Parametern,
int iMaxParams
: die maximale Anzahl von Parametern,
- Ausgabe
int
: die Anzahl der analysierten Parameter,
Die Funktion basiert auf String::indexOf()
und String::substring()
:
int StringSplit(String sInput, char cDelim, String sParams[], int iMaxParams)
{
int iParamCount = 0;
int iPosDelim, iPosStart = 0;
do {
// Searching the delimiter using indexOf()
iPosDelim = sInput.indexOf(cDelim,iPosStart);
if (iPosDelim > (iPosStart+1)) {
// Adding a new parameter using substring()
sParams[iParamCount] = sInput.substring(iPosStart,iPosDelim-1);
iParamCount++;
// Checking the number of parameters
if (iParamCount >= iMaxParams) {
return (iParamCount);
}
iPosStart = iPosDelim + 1;
}
} while (iPosDelim >= 0);
if (iParamCount < iMaxParams) {
// Adding the last parameter as the end of the line
sParams[iParamCount] = sInput.substring(iPosStart);
iParamCount++;
}
return (iParamCount);
}
Und die Bedienung ist denkbar einfach:
String sParams[3];
int iCount, i;
String sLine;
// reading the line from file
sLine = readLine();
// parse only if exists
if (sLine.length() > 0) {
// parse the line
iCount = StringSplit(sLine,',',sParams,3);
// print the extracted paramters
for(i=0;i<iCount;i++) {
Serial.print(sParams[i]);
}
Serial.println("");
}