Subscribe Us

header ads

Bài 6 Hưỡng Dẫn Tự Học ESP8266. Phần 2 Xử Lý String Cho ESP8266 Trên Arduino IDE


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

Đăng nhận xét

0 Nhận xét