برای کار کردن با stringها، انواع توابع در آردوینو در نظر گرفته شده که کار با رشته هارو بسیار ساده میکنه.
فرض کنید یک رشته به صورت زیر تعریف کرده ایم:
String message;
از پر کاربردترین این تابع ها برای کار با این رشته میشه به موارد زیر اشاره کرد:
()trim: با استفاده از این تابع، message به اصطلاح هرس شده و n/ از ابتدا و انتهای آن حذف میشود و تنها خود متن اصلی رشته باقی می ماند. استفاده از این تابع به این صورته:
message.trim()
indexOf(const String): در این تابع یک کاراکتر و یا یک رشته به عنوان ورودی داده و ایندکس اون کاراکتر در اون رشته رو به عنوان یک integer برمیگردونه. استفاده از این تابع به این صورته:
x = message.indexOf("y")
با این خط کد، وجود حرف y در رشته message بررسی شده و در صورت وجود، ایندکس اون در متغیر x که یک integer هست، قرار میگیره. دقت کنید که در این حالت اگر بیش از یک y در رشته وجود داشته باشه، ایندکس اولین y، در x قرار میگیره.
lastIndexOf(const String): این تابع مشابه تابع بالا عمل میکنه و تنها فرقش اینه در صورت وجود کاراکتر مورد نظر ما، ایندکس آخرین کاراکتر مورد نظر ما برگردونده میشه. استفاده از این تابع به این صورته:
x = message.lastIndexOf("y")
()length: با استفاده از این تابع میتونید طول رشته رو بدست بیارید. استفاده از این تابع به این صورته:
message.length()
remove(unsigned int startIndex, unsigned int endIndex): این تابع دو integer به عنوان ورودی میگیره و از ایندکس startIndex تا ایندکس endIndex رو از رشته مورد نظر ما حذف میکنه. استفاده از این تابع به این شکله:
message.remove(a,b)
در این صورت از message به اندازه a حذف میشه.
startsWith(const String): این تابع بررسی میکنه که آیا message با یک رشته خاص شروع میشه یا خیر. خروجی این تابع true و یا false هست. استفاده از این تابع در یک مثال به این صورته:
message.startsWith("Hello")
با این خط کد، اینکه رشته message با Hello شروع میشه و یا خیر بررسی میشه.
substring(unsigned int startIndex, unsigned int endIndex): این تابع تقریبا مهم ترین تابعی هست که شما میتونید در کارتون استفاده کنید و با اون اطلاعات رو از دل یک رشته بیرون بکشید. این تابع دو integer مثل startIndex و endIndex به عنوان ورودی میگیره و از کاراکتر ایندکس startIndex تا کاراکتر ایندکس endIndex رشته رو به عنوان یک رشته جدید بهتون برمیگردونه. مثلا:
x = message.substring(3,5)
این خط کد از کاراکتر 3 تا کاراکتر 5 رشته message رو به عنوان یک رشته جدید در x ذخیره میکنه.
()toCharArray: این تابع رشته message رو به آرایه ای از کاراکترها تبدیل میکنه. مثلا:
x = message.toCharArray()
()toDouble: با استفاده از این تابع، میتونید یک عدد که در واقع به شکل رشته نوشته شده رو به شکل double دربیارید. مثلا:
x = message.toDouble()
در این صورت اگر message برابر با "5.34" بوده باشه، x برابر با 5.34 میشه.
()toFloat: این تابع هم مشابه تابع قبل عمل میکنه و تنها فرقش اینه که عدد نوشته شده در رشته رو به فرمت float در میاره. استفاده از این تابع هم به این صورت هست:
x = message.toDouble()
()toInt: این تابع هم شبیه دو تابع قبل عمل میکنه و این بار عددی که به شکل رشته نوشته شده به فرمت int در میاد. از این تابع میتونید به این صورت استفاده کنید:
x = message.toInt()
()toLowerCase: با استفاده از این تابع، تمامی حروفی که در رشته وجود داره به صورت lowerCase در میاد. استفاده از این تابع به این شکله:
message.toLowerCase()
با این کد، برای مثال اگر رشته message به صورت "aBcD" بوده باشه، به صورت "abcd" در میاد.
()toUpperCase: این تابع هم در واقع برعکس تابع بالا عمل میکنه. با استفاده از این تابع، تمامی حروفی که در رشته وجود داره به صورت upperCase در میاد. استفاده از این تابع به این شکله:
message.toUpperCase()
با این کد، برای مثال اگر رشته message به صورت "aBcD" بوده باشه، به صورت "ABCD" در میاد.
این تقریبا تمام توابعیه که میتونید برای کار کردن با String ها ازشون استفاده کنید. با ترکیب توابع بالا به سادگی میشه اطلاعات مورد نیازتون رو از Stringتون استخراج کرد. مثلا میتونید از کد زیر استفاده کنید:
void setup() {
Serial.begin(9600);
int position1, position2, position3;
String message;
message = "1:90&2:80&3:180";
message.trim();
position1 = (message.substring(message.indexOf(":")+1, message.indexOf("&"))).toInt();
Serial.println(position1);
message.remove(0,message.indexOf("&")+1);
position2 = (message.substring(message.indexOf(":")+1, message.indexOf("&"))).toInt();
Serial.println(position2);
message.remove(0,message.indexOf("&")+1);
position3 = (message.substring(message.indexOf(":")+1, message.length())).toInt();
Serial.println(position3);
}
void loop() {
}