यहाँ प्रश्न के उत्तर के रूप में स्ट्रिंग को विभाजित करने के लिए Arduino विधि है "सबस्ट्रिंग में स्ट्रिंग को कैसे विभाजित किया जाए?" वर्तमान प्रश्न के डुप्लिकेट के रूप में घोषित किया गया।
समाधान का उद्देश्य एसडी कार्ड फ़ाइल में लॉग की गई जीपीएस स्थितियों की एक श्रृंखला को पार्स करना है । स्ट्रिंग प्राप्त करने के बजाय , स्ट्रिंग को फ़ाइल से पढ़ा जाता है।Serial
समारोह 3 StringSplit()
स्ट्रिंग के sLine = "1.12345,4.56789,hello"
लिए एक स्ट्रिंग है sParams[0]="1.12345"
, sParams[1]="4.56789"
और sParams[2]="hello"
।
String sInput
: इनपुट लाइनों को पार्स किया जाना है,
char cDelim
: मापदंडों के बीच सीमांकक चरित्र,
String sParams[]
: मापदंडों का आउटपुट सरणी,
int iMaxParams
: मापदंडों की अधिकतम संख्या,
- आउटपुट
int
: पार्स किए गए मापदंडों की संख्या,
समारोह पर आधारित है String::indexOf()
और 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);
}
और उपयोग वास्तव में सरल है:
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("");
}