Phân tích chuỗi JavaScript

Đây cũng là cách tôi sử dụng vì nó rõ ràng nhất — giúp người khác dễ dàng theo dõi ý định mã của bạn 🤓

Hãy nhớ rằng mã tốt nhất không nhất thiết phải là cách thông minh nhất, đó là cách truyền đạt tốt nhất sự hiểu biết về mã của bạn cho người khác…

Trong ứng dụng Javascript, dữ liệu đầu vào chúng tôi chấp nhận từ người dùng thường ở định dạng chuỗi. Các biểu mẫu và trường nhập liệu là những ví dụ lớn nhất về điều này. Nhưng ứng dụng của chúng tôi không phải lúc nào cũng có thể tự xử lý tất cả dữ liệu này dưới dạng chuỗi. Đặc biệt khi nói đến các đầu vào như tuổi, giá hoặc số lượng, ứng dụng có thể cần chuyển đổi chúng thành loại "số" trước khi xử lý

Vì điều này, chúng tôi phải thực hiện nhiều thao tác phân tích chuỗi trong khi mã hóa. Để hoàn thành nhiệm vụ này, Javascript cung cấp các phương thức khác nhau, bao gồm parseInt và parseFloat, mà chúng ta có thể dễ dàng sử dụng mà không gặp rắc rối nào. Nhưng từ những phương pháp này, phương pháp nào phù hợp với loại nhiệm vụ nào?

Trong hướng dẫn này, chúng ta sẽ tìm hiểu sâu hơn về các phương pháp phân tích cú pháp này trong Javascript, xác định điểm tương đồng và khác biệt của chúng và hiểu khi nào nên sử dụng từng phương pháp đó. Vì vậy, không chậm trễ nữa, hãy bắt đầu


Chuỗi Javascript để phân tích cú pháp số nguyên với parseInt()

Javascript parseInt phân tích chuỗi thành số nguyên. Nếu chuỗi đã truyền không chứa số, nó sẽ trả về kết quả là NaN

parseInt("10") //10 
parseInt("No number in string") //NaN

Bạn có thể phân tích cú pháp một chuỗi chứa các ký tự không phải là số bằng cách sử dụng parseInt miễn là chuỗi đó bắt đầu bằng một ký tự số. Khi tìm kiếm các ký tự số, parseInt bỏ qua mọi khoảng trắng ở đầu chuỗi

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN

Nếu chuỗi đã truyền chứa nhiều hơn một số, thì parseInt luôn xuất ra số đầu tiên sau khi chuyển đổi kiểu. Ví dụ

parseInt("1233 90 322") //1233

Khi chúng tôi chuyển một số thập phân sang parseInt, nó chỉ xem xét các ký tự số trước dấu thập phân. Hành vi này tương tự như làm tròn số thập phân thành số nguyên gần nhất

parseInt("23.1")  //23
parseInt("129.67 only")  //129

parseInt cũng nhận ra các dấu dương và âm trong một chuỗi số và xuất số nguyên có dấu đã cho sau khi phân tích cú pháp. Trong những trường hợp như thế này, không được có bất kỳ ký tự nào khác, kể cả khoảng trắng, giữa ký hiệu và số

parseInt("+87 increase")  //87
parseInt("-23 decrease")  //-23
parseInt("   -89") //-89
parseInt("  -  90") //NaN

Một điểm khác cần lưu ý về parseInt của Javascript là nó không thể xác định các số trong ký hiệu dựa trên số mũ khoa học. Nếu bạn chuyển một chuỗi số ở định dạng này, parseInt chỉ trích xuất phần số trước khi xuất hiện ký tự “e”

parseInt("123e100") //123

Giải thích các số trong một cơ số cụ thể

Thông thường, parseInt giả sử mọi chuỗi đầu vào được truyền là một số ở cơ số 10 (thập phân). Nhưng parseInt cung cấp một cách để thay đổi cơ số được xem xét bằng cách sử dụng đối số thứ hai chấp nhận một giá trị cơ số cụ thể từ 2 đến 36. Bằng cách này, chúng tôi có thể phân tích cú pháp nhị phân (2), bát phân (8), thập lục phân (16) hoặc số với bất kỳ cơ sở nào khác trong một bước

Ở đây, chúng tôi sẽ phân tích số lượng của các cơ số khác nhau để xem cách parseInt hoạt động với đối số cơ số này

parseInt("13", 8) //11
parseInt("f2", 16) //242
parseInt("101", 2) //5
parseInt("323", 2) //NaN

Ngoài ra, nếu bạn chuyển một chuỗi số bắt đầu bằng “0x” hoặc “0X”, thì parseInt sẽ tự động coi số này là số thập lục phân (không phải số thập phân) ngay cả khi cơ số không được chỉ định

parseInt("0xa1") //161
parseInt("0XF1") //241

Số. phân tích cú phápInt

phương thức parseInt có một đối tác được xác định trong đối tượng Số Javascript có cùng tên. Và số này. parseInt hoạt động giống như phương thức parseInt toàn cầu

________số 8


Phân tích số thập phân bằng Javascript parseFloat()

parseFloat của Javascript hoạt động giống như parseInt ngoại trừ việc nó có thể phân tích cú pháp các số dấu phẩy động bên cạnh các số nguyên. Vì vậy, nếu bạn muốn phân tích các số thập phân bằng mã của mình, thì parseFloat là phương pháp bạn nên sử dụng thay vì parseInt

Hầu hết các quy tắc chúng ta đã thảo luận trong parseInt cũng áp dụng cho phương thức parseFloat. Dưới đây là tóm tắt các quy tắc đó

  • Có thể phân tích một số trong một chuỗi có các ký tự không phải là số miễn là nó bắt đầu bằng một số
  • Nếu chuỗi không bắt đầu bằng số, hãy trả về NaN
  • Bỏ qua các khoảng trắng ở đầu hoặc cuối
  • Chỉ phân tích cú pháp số đầu tiên trong chuỗi
  • Nhận dạng dấu + và - trong chuỗi và xuất số được phân tích cú pháp với dấu chính xác

Bây giờ, hãy xem cách phương thức parseFloat hoạt động với các loại đầu vào khác nhau theo các quy tắc này

parseFloat("10.345")  //10.345
parseFloat("No number in string") //NaN
parseFloat("45.23 in height")  //45.23
parseFloat("    900.23 hours")  //900.23
parseFloat("closing 34.234")  //NaN
parseFloat("+1233.1 distance") //1233.1
parseFloat("-122.3454 reduction")  //-122.3454
parseFloat("   -122.1")  //-122.1
parseFloat("233.11 54.1 53.1")  //233.11

parseFloat cũng có thể phân tích cú pháp số nguyên mà không cần chuyển đổi chúng thành số float trong quá trình hoạt động. Ví dụ

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN
0

Tuy nhiên, không giống như parseInt, parseFloat không cung cấp cho bạn tùy chọn để chỉ định cơ số của số đã truyền. Thay vào đó, nó giả sử tất cả các chuỗi đầu vào đều có cơ số 10. Nó cũng không hỗ trợ ký hiệu thập lục phân dựa trên “0x” trong đầu vào

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN
1

Một lợi thế mà parseFloat có hơn parseInt là nó có thể xử lý các trường hợp sử dụng ký hiệu khoa học. Dưới đây là một vài ví dụ về phân tích số được viết trong ký hiệu này

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN
2

parseFloat cũng có thể nhận dạng và phân tích cú pháp “infinity” trong đầu vào chuỗi

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN
3

Số. phân tích nổi

Tương tự như parseInt, parseFloat cũng có một Số đối ứng. parseFloat hoạt động giống như phương thức toàn cầu. Dưới đây là một vài ví dụ về việc sử dụng nó

parseInt("12 years old") //12
parseInt("    98 pieces") //98
parseInt("new 23 members") //NaN
4


Chuyển đổi chuỗi thành số với Number()

Ngoài các phương thức parseInt và parseFloat, Javascript cung cấp cách thứ ba để phân tích chuỗi thành số nguyên. Đó là hàm Javascript Number(). Tuy nhiên, nó chỉ có thể xử lý các chuỗi chứa 100% ký tự số, ngoại trừ các khoảng trắng ở đầu và cuối

Tuy nhiên, ngoài sự khác biệt này, hàm Number kết hợp những phẩm chất tốt nhất của parseInt và parseFloat vào một gói duy nhất

  • Phân tích cú pháp cả số nguyên và số dấu phẩy động

    parseInt("12 years old") //12
    parseInt("    98 pieces") //98
    parseInt("new 23 members") //NaN
    
    5

  • Trả về NaN cho các đầu vào không chứa số

    parseInt("12 years old") //12
    parseInt("    98 pieces") //98
    parseInt("new 23 members") //NaN
    
    6

  • Xác định các số được viết bằng ký hiệu khoa học

    parseInt("12 years old") //12
    parseInt("    98 pieces") //98
    parseInt("new 23 members") //NaN
    
    7

  • Nhận dạng số đã ký

    parseInt("12 years old") //12
    parseInt("    98 pieces") //98
    parseInt("new 23 members") //NaN
    
    8

  • Hỗ trợ biểu diễn chữ số theo các cơ số khác nhau như “0x” (thập lục phân), “0o” (bát phân) và “0b” (nhị phân)

    parseInt("12 years old") //12
    parseInt("    98 pieces") //98
    parseInt("new 23 members") //NaN
    
    9

Hàm Số hoạt động theo một cách đặc biệt khi một số loại đầu vào nhất định được cung cấp. Ví dụ: nó trả về 0 cho đầu vào chuỗi rỗng và rỗng. Ngoài ra, tương tự như parseFloat, nó chấp nhận “Infinity” là một giá trị số hợp lệ trong quá trình phân tích cú pháp chuỗi

parseInt("1233 90 322") //1233
0


Phân tích chuỗi với toán tử đơn nguyên (+)

Javascript cho phép chúng tôi chuyển đổi trực tiếp các chuỗi thuần số thành loại số bằng cách sử dụng toán tử đơn nguyên hoặc dấu cộng. Hành vi của nó ít nhiều giống với hàm Number. Dưới đây là một vài ví dụ về toán tử đơn nguyên đang hoạt động

parseInt("1233 90 322") //1233
1


kết thúc

Như chúng ta đã thấy trong hướng dẫn này, Javascript cung cấp một số phương thức mà chúng ta có thể sử dụng để chuyển đổi chuỗi thành số. Mặc dù tất cả các phương pháp này đều có nhiều điểm tương đồng, nhưng chúng có các chức năng độc đáo giúp chúng phù hợp với các trường hợp và yêu cầu sử dụng khác nhau. Với những gì chúng tôi đề cập hôm nay, tôi hy vọng bạn sẽ có thể chọn phương pháp phân tích cú pháp phù hợp nhất trong tương lai mà không có bất kỳ nhầm lẫn và sai sót nào

Làm cách nào để phân tích cú pháp chuỗi trong JavaScript?

JSON. phương thức tĩnh parse() phân tích cú pháp một chuỗi JSON, xây dựng giá trị hoặc đối tượng JavaScript được mô tả bởi chuỗi. Một chức năng hồi sinh tùy chọn có thể được cung cấp để thực hiện chuyển đổi trên đối tượng kết quả trước khi nó được trả về.

Phân tích cú pháp trong JavaScript là gì?

Phân tích cú pháp có nghĩa là phân tích và chuyển đổi chương trình thành định dạng bên trong mà môi trường thời gian chạy thực sự có thể chạy , chẳng hạn như công cụ JavaScript bên trong trình duyệt. Trình duyệt phân tích cú pháp HTML thành cây DOM. Phân tích cú pháp HTML liên quan đến mã thông báo và xây dựng cây.

Làm cách nào để phân tích chuỗi thành mảng trong JavaScript?

Chuỗi trong JavaScript có thể được chuyển đổi thành một mảng ký tự bằng cách sử dụng hàm split() và Array. các hàm from() .

Làm cách nào để phân tích giá trị trong JavaScript?

Phương thức parseInt phân tích cú pháp một giá trị dưới dạng chuỗi và trả về số nguyên đầu tiên . Một tham số cơ số xác định hệ thống số để sử dụng. 2 = nhị phân, 8 = bát phân, 10 = thập phân, 16 = thập lục phân. Nếu cơ số bị bỏ qua, JavaScript giả sử cơ số 10.