JavaRush /Blog Java /Random-VI /Thoát ký tự trong Java
Oleksandr Klymenko
Mức độ
Харків

Thoát ký tự trong Java

Xuất bản trong nhóm
Đã xảy ra lỗi! Bài viết này được viết dưới dạng bài tập thử nghiệm cho một vị trí trong nhóm JavaRush. Và nó được viết như một bài giảng chính thức. Do đó, tôi đảm bảo với bạn về chất lượng và số lượng kiến ​​​​thức hữu ích tích lũy được trong bài viết này. Ngoài thông tin lý thuyết và thực tiễn, bài viết còn chứa đựng những sự thật thú vị mà có thể bạn chưa biết! Thoát ký tự trong Java - 1Chào thế giới! Thoát ký tự là một giải pháp kỹ thuật rất thú vị và cần thiết. Nhu cầu thoát nhân vật đã đóng một vai trò quan trọng trong lịch sử của toàn bộ ngành lập trình. Trong bài viết này, chúng ta sẽ nói về việc thoát ký tự là gì, tại sao cần phải thoát chúng và cách thực hiện thoát ký tự trong Java. Bài viết sẽ cung cấp những ví dụ và sự thật thú vị liên quan đến chủ đề nhân vật trốn thoát. Thích đọc sách! Tất cả thông tin trong hệ thống máy tính được thể hiện dưới dạng văn bản, ở cấp độ thấp hơn được biểu thị bằng byte. Khi chúng tôi viết một lá thư hoặc tin nhắn, chúng tôi gõ văn bản mà một người có thể hiểu được. Khi viết mã trong IDE, chúng ta nhập văn bản mà trình biên dịch có thể phân tích cú pháp. Trong Java, văn bản có thể được biểu diễn dưới dạng một loại Stringcó dữ liệu được biểu thị bằng các ký tự điều khiển - dấu ngoặc kép.
String str = "Hello World!";
Với dòng chữ “Xin chào thế giới!” không có vấn đề gì phát sinh, nhưng nếu cùng một văn bản cần được làm nổi bật trong lời nói trực tiếp thì sao? Sử dụng các quy tắc ngữ pháp, có thể thấy rõ rằng văn bản “Xin chào thế giới!”, ngoài các ký tự điều khiển thuộc loại String, phải được đặt trong dấu ngoặc kép lời nói trực tiếp.
String str = "Java said, "Hello World!"";
Tùy chọn này sẽ không hoạt động vì trình biên dịch đơn giản là sẽ không hiểu việc khởi tạo biến kết thúc ở điểm nào str. Để giải quyết vấn đề này và các vấn đề tương tự, người ta đã phát minh ra ký tự thoát , tức là thay đổi các ký tự điều khiển thành cái gọi là chuỗi điều khiển, hay còn gọi là chuỗi thoát . Dưới đây là danh sách các chuỗi thoát java hợp lệ để sử dụng trong chuỗi. \t — Ký tự tab (trong java – tương đương với bốn dấu cách); \b— Trả về một ký tự trong văn bản lùi lại một bước hoặc xóa một ký tự trong một dòng (backspace); \n- Ký hiệu dòng mới; \r— Biểu tượng vận chuyển trở lại; \f— Chuyển trang này sang đầu trang tiếp theo; \'- Ký tự trích dẫn đơn; \"- Ký tự trích dẫn kép; \\— Ký tự gạch chéo ngược ( \). Bây giờ, hãy làm nổi bật lời nói trực tiếp trong cụm từ của chúng ta để trình biên dịch có thể dễ dàng phân tích những gì được viết.
String str = "Java said, \"Hello World!\"";
Do đó, văn bản viết có thể hiểu được đối với cả người biên dịch và người nếu nội dung của biến strđược hiển thị trên màn hình. Chúng tôi đã tìm ra ký tự thoát là gì và tại sao nó lại cần thiết. Và họ thậm chí còn thoát khỏi ký tự trích dẫn kép! Hãy tiến hành phân tích các chuỗi thoát còn lại. Ký tự tab trong một dòng được biểu thị bằng chuỗi thoát \tvà tương tự như bốn dấu cách. Tuy nhiên, nếu độ dài của chuỗi gồm bốn khoảng trắng bằng độ dài của bốn ký tự thì độ dài của chuỗi có ký tự tab sẽ bằng một. Ký tự tab thường được sử dụng để xây dựng các bảng hoặc các phần tử giao diện giả đồ họa , bởi vì... Điều này thuận tiện hơn việc viết bốn dấu cách. Dưới đây là một ví dụ về giao diện giả đồ họa. Thoát ký tự trong Java - 2Trong số tất cả các chuỗi thoát, ký hiệu \bcó lẽ là thú vị nhất, vì nó cho phép chúng ta xóa ký tự cuối cùng ở dòng đầu ra, tương tự như khi chúng ta xóa nó bằng cách nhấn phím xóa lùi .
System.out.print("2 + 2 = 5"); // Screen displays 2 + 2 = 5
System.out.print("\b");// Screen displays 2 + 2 =
System.out.print("4");// Screen displays 2 + 2 = 4
Các biểu tượng \n\rmột lịch sử chung - chúng ta hãy cùng nhau xem xét chúng. Bạn có thể đã gặp ký tự ngắt dòng \ntrước đây. Ví dụ: nếu một phương thức println()xuất ra thông tin để đầu ra tiếp theo sẽ ở trên một dòng mới thì phương thức đó print()sẽ không thực hiện ngắt dòng sau đầu ra, nhưng nếu bạn thêm một ký tự vào cuối đầu ra \nthì sẽ ngắt dòng sẽ được thực hiện.
System.out.print("Next output will be on a new line\n");
System.out.println("Next output will be on a new line");
Ký tự trả về đầu dòng \rcho phép chúng ta đưa con trỏ về đầu dòng đầu ra và hiển thị thông tin mới như thể trước đó không có gì trên dòng đó.
System.out.print("Text to be rewritten.");//The screen displays "Text to be rewritten."
System.out.print('\r');//The screen is blank
System.out.print("New text.");//The screen displays "New text."
Trên thực tế, việc quay ngược dòng có từ thời mà văn bản được in trên máy đánh chữ. Để thực hiện việc nạp dòng, cần phải di chuyển bàn trượt và hạ cần xuống (một phần của cơ cấu máy đánh chữ), sau đó việc nạp dòng sẽ được thực hiện. Nếu cần không hạ xuống thì người ta có thể tiếp tục in trên cùng một dòng. Đây là những gì chúng tôi quan sát được khi hiển thị biểu tượng \r. Về vấn đề này, khi lập trình viên muốn thực hiện ngắt dòng, theo thói quen, anh ta đã thực hiện một chuỗi ký tự ở cuối đầu ra \r\n. Khi thời đại của máy đánh chữ kết thúc, có một thế hệ lập trình viên vẫn sử dụng trình tự này, mặc dù bản thân họ chưa bao giờ làm việc với máy đánh chữ. Họ thường quên thứ tự họ cần để hoàn thành một chuỗi nhất định - \r\nhoặc \n\r. Sau đó, một từ kiểm tra đã hỗ trợ họ return, trong đó có thể thấy rõ thứ tự hiển thị các ký hiệu này. Tuy nhiên, sau này, khi phát triển phần mềm cho các phiên bản Windows đầu tiên, sau MS-DOS, các lập trình viên buộc phải sử dụng dãy \r\n. Bây giờ bạn không phải lo lắng về điều này và chỉ sử dụng ký tự để ngắt dòng \n. Thoát ký tự trong Java - 3Hãy quay ngược thời gian một lần nữa, khoảng những năm 80. Khi đó biểu tượng chuyển tiếp trang \ftới đầu trang tiếp theo trở nên phổ biến. Vào thời điểm đó, có những máy in dòng lớn, để làm việc với nó cần phải viết mã chương trình chứa nội dung và cách thức máy in sẽ in. Và để chỉ ra rằng văn bản phải được bắt đầu từ một trang mới, ký hiệu đã được sử dụng \f. Ở thời đại chúng ta, biểu tượng này từ lâu đã mất đi sự liên quan và bạn khó có thể bắt gặp nó. Kích thước của máy in tuyến tính khá ấn tượng. Thoát ký tự trong Java - 4Với các ký hiệu \’\\mọi thứ đều giống hệt như việc thoát dấu ngoặc kép, đã có ví dụ ở đầu bài viết. Bạn sẽ phải thoát khỏi một trích dẫn, ví dụ, để khởi tạo kiểu char bằng một trích dẫn.
char ch = '\'';
Thoát khỏi ký tự dấu gạch chéo ngược để chỉ ra rằng ký tự sau sẽ không nằm trong chuỗi thoát.
System.out.println("\\n - line break escape sequence");
// Output: \n - line break escape sequence
Trong thực tế, bạn thường phải thoát khỏi dấu gạch chéo ngược khi làm việc với đường dẫn:
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\"");
// Output: It's Java string: "C:\Program Files\Java\jdk1.7.0\bin"
Tôi đã nhấn mạnh rằng các chuỗi thoát này được sử dụng trong chuỗi (chuỗi ký tự), bởi vì phần còn lại được sử dụng để mô tả các biểu thức chính quy của lớp Patternvà không liên quan đến chủ đề của bài viết này. Tại đây bạn có thể thấy danh sách tất cả các chuỗi thoát cho lớp Pattern. Tuy nhiên, điều đáng chú ý là không thể tưởng tượng được các biểu thức chính quy ở dạng mà chúng tồn tại hiện nay nếu không sử dụng các chuỗi thoát, không chỉ trong java mà còn trong các ngôn ngữ lập trình phổ biến khác, chẳng hạn như PHP. Trong java, tính năng thoát ký tự cũng được sử dụng trong định dạng chuỗi. Ví dụ: khi chỉ định định dạng chuỗi để hiển thị ký hiệu phần trăm, bạn phải sao chép ký hiệu phần trăm - %%, nếu không chúng tôi sẽ gặp lỗi và IDE sẽ nhắc bạn thêm phần trăm.
System.out.printf("Milk fat percentage : %d%%", 10);
// Milk fat percentage : 10%
Điều này kết thúc bài viết. Tôi hy vọng bạn đã học được nhiều điều về cách thoát nhân vật và cách áp dụng nó vào thực tế. Thoát ký tự vốn có trong nhiều ngôn ngữ lập trình. Trong java, cũng như các ngôn ngữ giống C khác, công nghệ này được triển khai gần như giống hệt nhau. Do đó, kiến ​​thức bạn thu được từ bài viết này có thể hữu ích không chỉ trong java. Cảm ơn bạn đã quan tâm và chúc bạn học tập tốt!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION