Tư vấn: 0979.466.469 / 0938.128.290

MENU

Tách chuỗi trong Arduino

Gia cong pcb 600*150px

Trong bài viết này chúng ta sẽ tìm hiểu về việc tách một chuỗi bằng cách sử dụng hàm substring() trong Arduino.

 

Arduino cung cấp một hàm có sẵn substring() để tách một chuỗi nhất định. Chúng ta có thể chia một chuỗi bằng cách sử dụng giá trị chỉ mục bắt đầu và kết thúc.

 

Hàm substring() có hai đối số. Đối số đầu tiên là giá trị chỉ mục bắt đầu mà từ đó chúng ta muốn bắt đầu quá trình tách và đối số thứ hai là giá trị chỉ mục kết thúc nơi quá trình tách sẽ dừng lại.

 

Cú pháp:

 

Sub_string = MyString.substring(from, to);

 

Biến Sub_string sẽ chứa đầu ra của hàm substring () và biến MyString sẽ chứa chuỗi ban đầu mà chúng ta muốn tách. Biến from chứa chỉ số bắt đầu và biến to chứa chỉ số kết thúc.

 

Hãy xác định một chuỗi và chia nó bằng cách sử dụng hàm substring() và cho kết quả trên serial monitor của Arduino.

 

Thí dụ:

String My_S = "hello world";

 

void setup(){

    Serial.begin(9600);

}

void loop(){

    String sub_S = My_S.substring(0,5);

    Serial.println(sub_S);

    delay(1000);

}

 

Đầu ra:

 

hello

 

Trong đoạn mã trên, hàm Serial.println() cho kết quả trên serial monitor của Arduino. Quá trình tách chuỗi sẽ bắt đầu từ 0, bao gồm ký tự chỉ mục 0 và kết thúc ở chỉ mục 5, không bao gồm ký tự ở chỉ mục 5.

 

Chúng ta cũng có thể tìm chỉ mục ký tự bằng cách sử dụng hàm indexOf() của Arduino. Chỉ mục của hàm chấp nhận hai đối số.

 

Đối số đầu tiên là bắt buộc, đại diện cho ký tự hoặc chuỗi có chỉ mục mà chúng ta muốn tìm. Đối số thứ hai là tùy chọn và nó đại diện cho chỉ mục bắt đầu để tìm chỉ mục của ký tự.

 

Theo mặc định, hàm indexOf() bắt đầu tìm kiếm chuỗi từ đầu để tìm chỉ mục của ký tự đã cho, nhưng chúng ta cũng có thể chuyển một chỉ mục làm điểm bắt đầu bằng cách sử dụng đối số thứ hai của hàm indexOf().

 

Cú pháp:

 

int index = MyString.indexOf(val, from);

 

Biến chỉ mục sẽ lưu trữ chỉ số biến val, chỉ số này chứa một ký tự hoặc chuỗi trong đoạn mã trên. Biến from xác định chỉ mục bắt đầu được sử dụng làm điểm bắt đầu để tìm chỉ mục của ký tự đã cho.

 

Chúng ta sử dụng hàm indexOf() khi chúng ta không biết chỉ số ký tự để chuyển vào trong substring().

 

Ví dụ: nếu chúng ta muốn tách chuỗi đã cho bằng cách sử dụng ký tự khoảng trắng làm chỉ số kết thúc, chúng ta có thể sử dụng hàm indexOf() để tìm chỉ số của ký tự khoảng trắng và sau đó sử dụng nó bên trong hàm substring() để tách chuỗi. 

 

Hàm indexOf() sẽ trả về -1 nếu không tìm thấy chỉ mục trong chuỗi đã cho.

 

Thí dụ:

String My_S = "hello world";

 

void setup(){

  Serial.begin(9600);

}

Module điện tử 932*50

void loop(){

    int index = My_S.indexOf(' ');

    String sub_S = My_S.substring(0,index);

    Serial.println(index);

    Serial.println(sub_S);

    delay(1000);

}

 

Đầu ra:

5

hello

 

Trong đoạn mã trên, chỉ số biến chứa chỉ số của ký tự khoảng trắng có trong chuỗi đã cho. Như bạn có thể thấy, chúng ta đã hiển thị chỉ mục và kết quả của việc tách chuỗi trên cửa sổ serial monitor.

 

Chúng ta cũng có thể tách một chuỗi dựa trên số dòng.

 

Ví dụ: nếu một chuỗi chứa nhiều dòng văn bản và chúng ta muốn tách và lấy mỗi dòng là một chuỗi riêng biệt.

 

Chúng ta có thể sử dụng hàm indexOf(' n') để tìm chỉ mục của một dòng mới và chia chuỗi đã cho tương ứng.

 

Hàm indexOf() bắt đầu tìm kiếm chỉ mục từ đầu chuỗi đã cho. Tuy nhiên, chúng ta cũng có thể sử dụng hàm lastIndexOf() để tìm kiếm chỉ mục bắt đầu từ cuối một chuỗi.

 

Là đối số thứ hai, chúng ta cũng có thể chuyển chỉ mục bắt đầu vào bên trong hàm lastIndexOf(). Ví dụ: hãy chia một chuỗi có ba dòng, lấy dòng cuối cùng và hiển thị nó trên cửa sổ serial monitor.

 

Thí dụ:

String My_S = "hello world Greetings People";

 

void setup(){

    Serial.begin(9600);

    Serial.println(My_S);

}

void loop(){

    int index = My_S.lastIndexOf(' ');

    int length = My_S.length();

    String sub_S = My_S.substring(index, length);

    Serial.println(sub_S);

    delay(100000);

}

 

Đầu ra:

hello world

Greetings

People

 

People

 

Chúng ta đã sử dụng hàm lastIndexOf() trong đoạn mã trên vì chỉ muốn nhận dòng văn bản cuối cùng trong chuỗi đã cho. Ba dòng đầu tiên là chuỗi đã cho trong đầu ra và dòng thứ tư là kết quả của việc tách chuỗi.

 

Chúng ta đã sử dụng hàm length() để lấy độ dài của chuỗi đã cho sẽ được sử dụng làm giá trị chỉ mục kết thúc bên trong substring(). Chúng ta đã sử dụng hàm delay() để thêm một số độ trễ trong quá trình thực thi mã vì vòng lặp sẽ lặp lại quá trình.

 

Nếu chúng ta chỉ muốn thực hiện tách, chúng ta có thể viết mã bên trong hàm setup(), hàm này chỉ chạy một lần.

 

Chúng ta có thể tách một chuỗi dựa trên bất kỳ ký tự nào. Chúng ta chỉ phải tìm chỉ mục của nó bằng cách sử dụng hàm indexOf().

 

Chúng ta có thể tách chuỗi bằng cách sử dụng hàm substring(). Giả sử chúng ta muốn lấy tất cả các dòng riêng biệt trong một chuỗi đã cho. Chúng ta phải lấy một dòng, lưu chuỗi còn lại trong một biến và thực hiện lại thao tác tương tự bằng cách sử dụng một vòng lặp cho đến khi tất cả các dòng đã được trích xuất.

Gia công pcb 932*150
Sản phẩm nổi bật
Sale 0%
121000 /Cái
/ Cái

Code: M-7006-040 Còn hàng

Lưu xem sau
Sale 0%
39000 - 45000 /Cái
/ Cái

Code: 7202-065 Còn hàng

Lưu xem sau
Sale 0%
PIC18 8-bit Microcontrollers - MCU 32KB 1536 RAM...
205000 /Cái
/ Cái

Code: 7204-103 Còn hàng

Lưu xem sau
Sale 0%
100000 /Cái
/ Cái

Code: 7203-043 Còn hàng

Lưu xem sau
Hỗ trợ liên kết
0979466469
0899909838
0938128290
0899909838
Khiếu nại: 0964238397
0979466469
0868565469
0868565469

Hotline: 0979 466 469

Loading
0964238397
Bạn cần linh kiện mẫu ? 7-11 ngày