Trong bài đăng này, chúng tôi sẽ thảo luận về một vấn đề phổ biến mà chúng tôi gặp phải trong JavaScript và các ngôn ngữ lập trình khác khi làm việc với các chuỗi. Vấn đề là kiểm tra xem một chuỗi có bắt đầu bằng một số hay không, i. e. để kiểm tra xem ký tự đầu tiên của chuỗi có phải là số hay ký tự nào khác không
Chúng ta sẽ tìm hiểu những cách khác nhau để làm điều đó trong bài đăng này
Phương thức charCodeAt trả về ký tự unicode tại một chỉ mục hoặc vị trí nhất định của một chuỗi. Phương thức này lấy chỉ số của ký tự làm tham số và trả về giá trị unicode của ký tự đó
Chỉ số của các ký tự bắt đầu từ 0 và kết thúc ở độ dài chuỗi - 1. Chúng ta có thể chuyển 0 làm tham số cho hàm này để lấy giá trị unicode cho ký tự đầu tiên
Chúng ta cần so sánh giá trị với 48 và 57. charCodeAt của '0' là 48 và charCodeAt của '9' là 57
Vì vậy, chúng ta có thể viết một hàm trả về true hoặc false dựa trên giá trị unicode của ký tự đầu tiên của chuỗi
Dưới đây là chương trình hoàn chỉnh
const isFirstCharNum = [str] =>
str.charCodeAt[0] > 47 && str.charCodeAt[0] < 58;
const strArrays = ["hello", "0123", "0hello", "#4676", "0", ""];
strArrays.forEach[[str] =>
console.log[`${str} starts with a number => ${isFirstCharNum[str]}\n`]
];
Trong ví dụ này,
- Hàm isFirstCharNum dùng để kiểm tra xem ký tự đầu tiên của chuỗi có phải là số hay không. Nó trả về một giá trị boolean, true nếu ký tự đầu tiên là một số, ngược lại nó trả về false
- strArrays là một mảng các chuỗi
- Chúng tôi đang lặp lại từng chuỗi của mảng này và gọi phương thức isFirstCharNum để nhận kết quả
Nếu bạn chạy chương trình này, nó sẽ in đầu ra như bên dưới
hello starts with a number => false
0123 starts with a number => true
0hello starts with a number => true
#4676 starts with a number => false
0 starts with a number => true
starts with a number => false
Chúng ta cũng có thể sử dụng phương thức charAt để có được kết quả tương tự. Phương thức này được sử dụng để lấy ký tự ở một vị trí cụ thể của chuỗi trong JavaScript. Nó được định nghĩa như dưới đây
Nó sẽ trả về ký tự tại vị trí i của chuỗi str. Ta có thể so sánh ký tự này với '0' và '9' để biết ký tự đó có phải là ký tự số hay không
Hãy viết lại chương trình trên
const isFirstCharNum = [str] => str.charAt[0] >= "0" && str.charAt[0]
console.log[`${str} starts with a number => ${isFirstCharNum[str]}\n`]
];
Nó sẽ cho kết quả giống như chương trình trên
hello starts with a number => false
0123 starts with a number => true
0hello starts with a number => true
#4676 starts with a number => false
0 starts with a number => true
starts with a number => false
Hàm isNaN dùng để kiểm tra xem một số có phải là số không. NaN là viết tắt của Not-a-Number và hàm isNaN[] trả về giá trị true nếu giá trị không phải là số. Khác, nó trả về false
Hãy cùng xem chương trình dưới đây
const testValues = [10, 10.5, -2.39, "0", "a", "23", "a233"];
testValues.forEach[[str] => console.log[`${str} => ${!isNaN[str]}`]];
Nó đang in giá trị không phải của isNaN cho mỗi giá trị của mảng testValues. Nếu bạn chạy chương trình này, nó sẽ in đầu ra bên dưới
10 => true
10.5 => true
-2.39 => true
0 => true
a => false
23 => true
a233 => false
Vì thế,. isNaN[] trả về true nếu tham số là số, ngược lại trả về false
Hãy sử dụng nó để kiểm tra xem ký tự đầu tiên của chuỗi có phải là số hay không
const isFirstCharNum = [str] => !isNaN[str.charAt[0]];
const strArrays = ["hello", "0123", "0hello", "#4676", "0", ""];
strArrays.forEach[[str] =>
console.log[`${str} starts with a number => ${isFirstCharNum[str]}\n`]
];
Nếu bạn chạy chương trình này, nó sẽ in đầu ra bên dưới
hello starts with a number => false
0123 starts with a number => true
0hello starts with a number => true
#4676 starts with a number => false
0 starts with a number => true
starts with a number => true
Ngoại lệ
Đối với một chuỗi rỗng, nó trả về true. Bởi vì, chuỗi rỗng được hiểu là 0 trong JavaScript và isNaN trả về false cho nó
Phương pháp 4. Bằng cách sử dụng một biểu thức chính quy, Regex
Chúng ta có thể sử dụng biểu thức chính quy để so khớp ký tự đầu tiên của chuỗi và kiểm tra xem đó có phải là số hay không. Để so khớp ký tự đầu tiên của chuỗi và để kiểm tra xem đó có phải là số hay không, chúng ta cần sử dụng /^\d/. Ở đây, các ký tự / được sử dụng để khớp với phần đầu và phần cuối của chuỗi, ^ xác định phần đầu của chuỗi và \d khớp nếu ký tự đầu tiên có phải là một chữ số hay không
Chúng ta có thể sử dụng mẫu này theo hai cách. Chúng ta có thể sử dụng chức năng khớp của chuỗi hoặc chúng ta có thể sử dụng chức năng kiểm tra
a] Bằng cách sử dụng hàm match[]
Hàm match[] so khớp một chuỗi với một biểu thức chính quy. Nó lấy một đối tượng biểu thức chính quy làm tham số và trả về null nếu không tìm thấy kết quả khớp hoặc một mảng. Chúng tôi có thể kiểm tra nếu trả về không phải là null, thì chuỗi bắt đầu bằng một số