Như ở phần trước mình đã nói sơ qua về biến hằng và kiểu dữ
liệu.thì ở bài này mình sẽ nói qua một kiểu dữ liệu rất quan trong và hay được
sử dụng trong lập trình ESP8266 trên Arduino đó là kiểu String.
String Có Vai Trò Như Thế Nào Trong Lập Trình ESP8266 Trên Arduino IDE?
String là Chuỗi ký tự, dẽ sử lý và chuyển đổi trên Arduino
IDE. String có thể được thêm bớt cắt sửa tìm kiếm và so sánh.
Khái Báo Một Biến Với Kiểu String
Cách 1
String Str1 = "Tro Ly Hoc Tap";
String Str1 = "Tro Ly Hoc Tap";
String Str2 = "LEPAN";
String SDT = "+843456789012";
Khai báo 1 biến Str1 với kiểu dữ liệu String chứa nội dung
Trợ Lý Học Tập
Cách 2
String Str3,Str4,Str5,Str6,Str7,Str8,Str9;
Khai báo 3 biến Str1 Str2 Str3 với kiểu dữ liệu String
Cách Sử Dụng Kiểu Dữ Liệu String
In nội dung trong chuỗi ra cửa sổ serial monitor
Serial.println(Str1);
In ra cửa sổ serial monitor nội dung của chuỗi Str1
Gán chuỗi
Str3 = Str1;
Gán nối dung của chuỗi Str1 cho chuỗi Str3Kết quả. Tro Ly Hoc Tap
Cách cộng chuỗi
Str4 = Str1+Str2+SDT;
Kết quả. Tro Ly Hoc TapLEPAN+84345678901
Thêm Chuỗi Vào Biến
Str5 = Str1 +”ESP8266”;
Chuỗn Str5 sẽ chứa nội dung của Chuỗi Str3 và cộng thêm
ESP8266
toUpperCase() Chuyển Tất Cả Chuỗi Về In Hoa
Str1.toUpperCase();
Chuỗi Str1 sẽ chứa nội dung in hoa
Kết quả. TRO LY HOC TAP
toLowerCase() Chuyển Tất Cả Chuỗi Về In Thường
Str1.toUpperCase();
Chuỗi Str1 sẽ chứa nội dung in Thường
Kết quả. tro ly hoc tap
length() Độ dài chuỗi String
int ddc = Str1.length();
trả về kiểu dữ liệu int với độ dài chuỗi
Kết quả 14
substring(from,to) Lấy 1 chuỗi con từ vị trí from tới vị trí to
Str6 = Str1.substring(7,10);
Lấy 1 chuỗi con Str6 từ chuôi Str1 từ vị trí 7 đến 10.
Lưu ý, ký tự đầu tiên sẽ là vị trí số 0.
Kết quả. hoc
Nếu bạn không để to
thì chuỗi con sẽ được lấy tới vị trí cuối cùng
indexOf() tì vị trí ký tự có trong chuỗi xuất hiện đầu tiên
Kết quả trả về là kiểu số int, hoặc -1 nếu k tìm thấy
String Str = "LEPAN+84345678901LEPAN";
Kết quả. 5
lastIndexOf tì vị trí ký tự có trong chuỗi xuất hiện cuối cùng trong chuỗi
Kết quả trả về là kiểu số int, hoặc -1 nếu k tìm thấy
int vitri2 = Str.lastIndexOf("EP");
kết quả. 19
sử dụng indexOf và substring để tách chuỗi sdt trong chuỗi String Ngẫu Nhiên
VD Str = "LEPAN+84345678901LEPAN";
ở đây có 1 chuỗi trong đó có sdt với mã quốc gia là +84.
SDT ở viết nam sẽ có 10 Số. +84 thay số 0 thì ta sẽ có 12
ký tự chữ số.
Ta sử dụng hàm substring để cắt từ vị trí đầu tiên của +84
và 12 ký tự tiếp theo
int vitri84 = Str.indexOf("+84"); //5
Str7 = Str.substring(vitri84,17);
Serial.print("chuỗi SDT là");
Serial.println(Str7);
Chương trình Ví Dụ TRên Arduino IDE
/* LEPAN Trợ Lý Học Tập
* Sử Dụng Chuỗi
* Tự học esp 8266
* https://trolyhoctap.blogspot.com/
*/
String Str = "LEPAN+84345678901LEPAN";
String Str1 = "Tro Ly Hoc Tap";
String Str2 = "LEPAN";
String SDT = "+843456789012";
String Str3,Str4,Str5,Str6,Str7,Str8,Str9;
void setup() {
Serial.begin(9600);
Serial.print("Nội Dung Trong Chuỗi Str1 Là: ");
Serial.println(Str1);
//gán chuỗi
Str3 = Str1;
Serial.print("Nội Dung Trong Chuỗi Str3 Là: ");
Serial.println(Str3);
//cộng chuỗi
Str4 = Str1+Str2+SDT; //Tro Ly Hoc TapLEPA+843456789012
Serial.print("Nội Dung Trong Chuỗi Str4 Là: ");
Serial.println(Str4);
//Thêm Chuối
Str5 = Str1 +"ESP8266";
Serial.print("Nội Dung Trong Chuỗi Str5 Là: ");
Serial.println(Str5); //Tro Ly Hoc TapESP8266
//chuyển tất cả về in hoa
Str1.toUpperCase();
Serial.print("Nội Dung in hoa Str1 Là: ");
Serial.println(Str1); //TRO LY HOC TAP
// chuyen tất cả về in thuong
Str1.toLowerCase();
Serial.print("Nội Dung In Thuong Str1 Là: ");
Serial.println(Str1); //tro ly hoc tap
//độ dài chuỗi
int dodai = Str1.length();
Serial.print("độ dài chuỗi Str1 Là: ");
Serial.println(dodai); //14
//cat chuôi từ vị trí 7 đến 10
Str6 = Str1.substring(7,10);
Serial.print("chuỗi con Str6 Là:");
Serial.println(Str6); //hoc
// tìm vị trí dầu tiên có trong chuỗi. với vi trí trả về là kiểu int
//tìm chữ EP trong chuỗi mẫu
int vitri = Str.indexOf("EP");
Serial.print("Vị Trí EP trong chuỗi: ");
Serial.println(vitri); //1
// tìm vị trí cuối cung có trong chuỗi. với vi trí trả về là kiểu int
// tìm chữ EP trong chuỗi mẫu
int vitri2 = Str.lastIndexOf("EP");
Serial.print("Vị Trí EP trong chuỗi: ");
Serial.println(vitri2); //19
//===> sử dụng indexOf và substring để tách chuỗi sdt trong chuỗi String Ngẫu Nhiên VD Str = "LEPAN+84345678901LEPAN";
//===> ở đây có 1 chuỗi trong đó có sdt với mã quốc gia là +84.
//===> SDT ở viết nam sẽ có 10 chữ. +84 thay số 0 thì ta sẽ có 12 ký tự chữ số.
int vitri84 = Str.indexOf("+84"); //5
Str7 = Str.substring(vitri84,17);
Serial.print("chuỗi SDT là");
Serial.println(Str7);
}
void loop() {
// put your main code here, to run repeatedly:
}
Bật cửa sổ serial monitor trên Arduino IDE
Khai Báo Và Sử Dụng Chuỗi |
Cách Dùng Lệnh IF Để So Sánh Và Kiểm Tra Chuỗi
Khai Báo Biến Cần Dùng
String Str = "LEPAN+84345678901LEPAN";
String Str2 = "LEPAN";
String Str3 = "LEPAN";
Dùng Toán Tử Để Xem 2 Chuỗi Có Giống Nhau Không
Trả về đúng là true sai là false
if(Str2==Str3){
Serial.println("chuỗi Str2 Bằng Chuỗi Str3");
}
else Serial.println("chuỗi Str2 Không Bằng Chuỗi Str3");
Nếu 2 chuỗi giống nhau sẽ in ra giống nhau.ngược lại Nếu khác in ra khác nhau
equals so sánh 2 chuỗi bằng nhau không
Trả về đúng là true sai là false
if (Str2.equals(Str3)){
Serial.println("chuỗi Str2 và Str3 Bằng Nhau");
}
else Serial.println("chuỗi Str2 và Str3 Không Bằng nhau");
Nếu 2 chuỗi giống nhau sẽ in ra giống nhau.ngược lại Nếu khác in ra khác nhau
Sử Dụng indexOf() Kiểm Tra Trong Chuỗi Có Sự Xuất Hiện Của ký Tự Cần Tìm Không
indexOf() sẽ trả về vị trí xuất hiện trong chuỗi từ vị trí
0 cho đến độ dài chuỗi. và nếu không tìm thấy chuỗi mặc định nó sẽ trả về -1
VD. Sẽ tìm trong chuỗi Str có sự xuất hienj của +84 không
if (Str.indexOf("+84") >= 0 ){
Serial.println("có xuất hiện +84");
}
else Serial.println("không xuất hiện +84");
Kết quả. +84345678901
Chương trình Ví Dụ So Sánh Tìm Kiếm Chuỗi TRên Arduino IDE
/* LEPAN Trợ Lý Học Tập
* So Sánh VÀ Tìm Kiếm Chuỗi
* Tự học esp 8266
* https://trolyhoctap.blogspot.com/
*/
String Str = "LEPAN+84345678901LEPAN";
String Str2 = "LEPAN";
String Str3 = "LEPAN";
void setup() {
Serial.begin(9600);
// sử dụng toán tử bằng bằng
if(Str2==Str3){
Serial.println("chuỗi Str2 Bằng Chuỗi Str3");
}
else Serial.println("chuỗi Str2 Không Bằng Chuỗi Str3");
// sử dụng equals
if (Str2.equals(Str3)){
Serial.println("chuỗi Str2 và Str3 Bằng Nhau");
}
else Serial.println("chuỗi Str2 và Str3 Không Bằng nhau");
//sử dung indexOf để tìm trong chuỗi Str có sự xuất hiện của +84 không
// nếu xuất hiện sẽ trả về vị trí. từ 0 trở lên. nếu không xuất hiện sẽ trả về -1
if (Str.indexOf("+84") >= 0 ){
Serial.println("có xuất hiện +84");
}
else Serial.println("không xuất hiện +84");
}
void loop() {
// put your main code here, to run repeatedly:
}
Bật Cửa Sổ Serial Monitor lên để kiểm tra nhá
So Sánh Và Tìm Kiếm Chuỗi |
Cảm ơn bạn đã theo dõi bài viết, mọi ý kiến thắc mắc bạn để
lại dưới bình luận mình sẽ phản hồi sớm nhất cho bạn
0 Nhận xét