Berikut adalah metode Arduino untuk memecah sebuah String sebagai jawaban untuk pertanyaan "Bagaimana cara memecah string dalam substring?" dinyatakan sebagai duplikat dari pertanyaan ini.
Tujuan dari solusi ini adalah mengurai serangkaian posisi GPS yang dicatat dalam file kartu SD . Alih-alih memiliki String yang diterima dari Serial
, String dibaca dari file.
Fungsi ini StringSplit()
mem-parsing sebuah String sLine = "1.12345,4.56789,hello"
ke 3 Strings sParams[0]="1.12345"
, sParams[1]="4.56789"
& sParams[2]="hello"
.
String sInput
: jalur input yang akan diuraikan,
char cDelim
: karakter pembatas antara parameter,
String sParams[]
: array output dari parameter,
int iMaxParams
: jumlah maksimum parameter,
- Output
int
: jumlah parameter yang diuraikan,
Fungsi ini didasarkan pada String::indexOf()
dan 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);
}
Dan penggunaannya sangat sederhana:
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("");
}