"স্ট্রিংয়ের মধ্যে একটি স্ট্রিং কীভাবে বিভক্ত করবেন?" প্রশ্নের উত্তর হিসাবে একটি স্ট্রিংকে বিভক্ত করার জন্য এখানে আরডুইনো পদ্ধতি রয়েছে ? বর্তমান প্রশ্নের সদৃশ হিসাবে ঘোষিত।
সমাধানের উদ্দেশ্য হ'ল এসডি কার্ড ফাইলে লগ ইন করা কয়েকটি জিপিএস পজিশনের পার্স করা । স্ট্রিং থেকে প্রাপ্তির পরিবর্তে স্ট্রিংটি ফাইল থেকে পড়ে।Serial
ফাংশনটি StringSplit()
একটি স্ট্রিং sLine = "1.12345,4.56789,hello"
থেকে 3 স্ট্রিংকে পার্স করা হয় 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("");
}