Tìm hiểu cách so sánh chữ cái giữa các chuỗi sẽ hữu ích cho việc phân loại và sắp xếp thứ tự chữ cái, trong số những thứ khác.
Các toán tử so sánh chuỗi ==,! =,>, <,> =, <= Và các phương thức equals() và equalsIgnoreCase() cho phép bạn so sánh theo thứ tự bảng chữ cái giữa các chuỗi, hữu ích cho việc phân loại và sắp xếp thứ tự bảng chữ cái, trong số những thứ khác.
Toán tử == và phương thức equals() hoạt động giống nhau. Nói cách khác
if (stringOne.equals(stringTwo)) {
giống hệt với
if (stringOne ==stringTwo) {
Toán tử ">" (lớn hơn) và "<" (nhỏ hơn) đánh giá các chuỗi theo thứ tự bảng chữ cái, trên ký tự đầu tiên mà cả hai khác nhau. Vì vậy, ví dụ "a" <"b" và "1" <"2", nhưng "999"> "1000" vì 9 đứng sau 1.
Chú ý: Các toán tử so sánh chuỗi có thể gây nhầm lẫn khi bạn so sánh các chuỗi số, vì các số được coi là chuỗi chứ không phải số. Nếu bạn cần so sánh các số, hãy so sánh chúng dưới dạng int, float hoặc long, chứ không phải dưới dạng chuỗi string.
Ví dụ so sánh chuỗi sử dụng toán tử so sánh
String stringOne, stringTwo;
void setup() {
// Mở giao tiếp serial và đợi cho cổng mở:
Serial.begin(9600);
while (!Serial) {
; // chờ cổng serial kết nối. Chỉ cần cho cổng USB gốc
}
stringOne = String("this");
stringTwo = String("that");
// gởi một intro:
Serial.println(" Comparing Strings:");
Serial.println();
}
void loop() {
// hai chuỗi bằng nhau:
if (stringOne == "this") {
Serial.println("StringOne == "this"");
}
// hai chuỗi không bằng nhau:
if (stringOne != stringTwo) {
Serial.println(stringOne + " =! " + stringTwo);
}
// hai chuỗi không bằng nhau (vấn đề phân biệt chữ hoa chữ thường):
stringOne = "This";
stringTwo = "this";
if (stringOne != stringTwo) {
Serial.println(stringOne + " =! " + stringTwo);
}
// bạn cũng có thể sử dụng equals() để xem nếu hai chuỗi giống nhau:
if (stringOne.equals(stringTwo)) {
Serial.println(stringOne + " equals " + stringTwo);
} else {
Serial.println(stringOne + " does not equal " + stringTwo);
}
// hoặc nếu bạn muốn bỏ qua chữ hoa chữ thường:
if (stringOne.equalsIgnoreCase(stringTwo)) {
Serial.println(stringOne + " equals (ignoring case) " + stringTwo);
} else {
Serial.println(stringOne + " does not equal (ignoring case) " + stringTwo);
}
// một chuỗi số so với số mà nó đại diện:
stringOne = "1";
int numberOne = 1;
if (stringOne.toInt() == numberOne) {
Serial.println(stringOne + " = " + numberOne);
}
// hai chuỗi số được so sánh:
stringOne = "2";
stringTwo = "1";
if (stringOne >= stringTwo) {
Serial.println(stringOne + " >= " + stringTwo);
}
// toán tử so sánh cũng có thể được sử dụng để so sánh các chuỗi để sắp xếp theo bảng chữ cái:
stringOne = String("Brown");
if (stringOne < "Charles") {
Serial.println(stringOne + " < Charles");
}
if (stringOne > "Adams") {
Serial.println(stringOne + " > Adams");
}
if (stringOne <= "Browne") {
Serial.println(stringOne + " <= Browne");
}
if (stringOne >= "Brow") {
Serial.println(stringOne + " >= Brow");
}
// toán tử compareTo() cũng cho phép so sánh các chuỗi
// nó đánh giá trên ký tự đầu tiên khác.
// nếu ký tự đầu tiên của chuỗi mà bạn đang so sánh sẽ xuất hiện đầu tiên
// thứ tự chữ và số, sau đó compareTo() lớn hơn 0:
stringOne = "Cucumber";
stringTwo = "Cucuracha";
if (stringOne.compareTo(stringTwo) < 0) {
Serial.println(stringOne + " comes before " + stringTwo);
} else {
Serial.println(stringOne + " comes after " + stringTwo);
}
delay(10000); // bởi vì phần kế tiếp là một vòng lặp:
// compareTo() rất hữu ích khi bạn có các chuỗi với số ở bên trong:
while (true) {
stringOne = "Sensor: ";
stringTwo = "Sensor: ";
stringOne += analogRead(A0);
stringTwo += analogRead(A5);
if (stringOne.compareTo(stringTwo) < 0) {
Serial.println(stringOne + " comes before " + stringTwo);
} else {
Serial.println(stringOne + " comes after " + stringTwo);
}
}
}
Hotline: 0979 466 469