JavaRush /จาวาบล็อก /Random-TH /การหลบหนีอักขระใน Java
Oleksandr Klymenko
ระดับ
Харків

การหลบหนีอักขระใน Java

เผยแพร่ในกลุ่ม
บางอย่างผิดพลาด! บทความนี้เขียนขึ้นเพื่อทดสอบตำแหน่งงานในทีม JavaRush และเขียนไว้เป็นการบรรยายอย่างเต็มเปี่ยม ด้วยเหตุนี้ฉันจึงรับประกันคุณภาพและปริมาณของความรู้ที่เป็นประโยชน์ที่สะสมในโพสต์นี้ นอกจากข้อมูลเชิงปฏิบัติและเชิงทฤษฎีแล้ว บทความนี้ยังมีข้อเท็จจริงที่น่าสนใจที่คุณอาจไม่รู้ด้วยซ้ำ! การหลบหนีอักขระใน Java - 1สวัสดีชาวโลก! การหลบหนีตัวละครเป็นวิธีแก้ปัญหาทางเทคนิคที่น่าสนใจและจำเป็นมาก ความจำเป็นในการหลบหนีตัวละครมีบทบาทสำคัญในประวัติศาสตร์ของอุตสาหกรรมการเขียนโปรแกรมทั้งหมด ในบทความนี้ เราจะพูดถึงว่าการ Escape อักขระคืออะไร เหตุใดจึงต้อง Escape และวิธีการใช้ Escape อักขระใน Java บทความนี้จะยกตัวอย่างและข้อเท็จจริงที่น่าสนใจเกี่ยวกับหัวข้อการหลบหนีของตัวละคร สนุกกับการอ่าน! ข้อมูลทั้งหมดในระบบคอมพิวเตอร์จะแสดงในรูปแบบข้อความ ซึ่งในระดับล่างจะแสดงเป็นไบต์ เมื่อเราเขียนจดหมายหรือข้อความ เราจะพิมพ์ข้อความที่บุคคลจะเข้าใจได้ เมื่อเราเขียนโค้ดใน IDE เราจะพิมพ์ข้อความที่คอมไพเลอร์สามารถแยกวิเคราะห์ได้ ใน Java ข้อความสามารถแสดงเป็นประเภทStringที่มีข้อมูลแสดงด้วยอักขระควบคุม - เครื่องหมายคำพูดคู่
String str = "Hello World!";
พร้อมข้อความ “Hello World!” ไม่มีปัญหาเกิดขึ้น แต่จะเกิดอะไรขึ้นหากจำเป็นต้องเน้นข้อความเดียวกันในการพูดโดยตรง? เมื่อใช้กฎไวยากรณ์ จะเห็นได้ชัดว่าข้อความ “Hello World!” นอกเหนือจากอักขระควบคุมประเภทStringจะต้องอยู่ในเครื่องหมายคำพูดโดยตรง
String str = "Java said, "Hello World!"";
ตัวเลือกนี้จะไม่ทำงานเพราะว่า strคอมไพเลอร์ก็จะไม่เข้าใจ ว่าการเริ่มต้นของตัวแปรสิ้นสุดลงที่จุดใด เพื่อแก้ปัญหานี้และปัญหาที่คล้ายกัน จึงถูกประดิษฐ์ขึ้นเพื่อใช้อักขระหลีกนั่นคือ เปลี่ยนอักขระควบคุม เป็นสิ่งที่ เรียกว่าลำดับการควบคุม หรือที่เรียกว่าลำดับหลีก ด้านล่างนี้คือรายการลำดับการหลีกเลี่ยง Java ที่ถูกต้องสำหรับใช้ในสตริง \t — อักขระแท็บ (ใน java - เทียบเท่ากับสี่ช่องว่าง) \b— อักขระส่งคืนในข้อความถอยหลังหนึ่งขั้นหรือลบอักขระหนึ่งตัวในบรรทัด (backspace) \n— สัญลักษณ์บรรทัดใหม่ \r— สัญลักษณ์ส่งคืนรถ \f— ข้ามหน้าไปยังจุดเริ่มต้นของหน้าถัดไป \'— อักขระเครื่องหมายคำพูดเดี่ยว \"— อักขระเครื่องหมายคำพูดคู่; \\— อักขระแบ็กสแลช ( \) ตอนนี้เรามาเน้นคำพูดโดยตรงในวลีของเราเพื่อให้คอมไพเลอร์สามารถแยกวิเคราะห์สิ่งที่เขียนได้อย่างง่ายดาย
String str = "Java said, \"Hello World!\"";
ดังนั้นข้อความที่เขียนจึงสามารถเข้าใจได้สำหรับทั้งคอมไพเลอร์และบุคคลหากเนื้อหาของตัวแปรstrแสดงบนหน้าจอ เราพบว่าการหลบหนีของตัวละครคืออะไร และเหตุใดจึงจำเป็น และพวกเขาก็รอดพ้นจากเครื่องหมายคำพูดคู่ด้วย! เรามาดำเนินการแยกวิเคราะห์ลำดับการหลีกเลี่ยงที่เหลือกัน อักขระแท็บในบรรทัดจะแสดงด้วยลำดับการหลีกเลี่ยง\tและคล้ายคลึงกับช่องว่างสี่ช่อง อย่างไรก็ตาม หากความยาวของสตริงที่ประกอบด้วยสี่ช่องว่างเท่ากับความยาวของอักขระสี่ตัว ความยาวของสตริงที่มีอักขระแท็บจะเท่ากับหนึ่ง อักขระแท็บมักใช้เพื่อสร้างตารางหรือ องค์ประกอบอินเทอร์เฟซ แบบกราฟิกหลอกเนื่องจาก... สะดวกกว่าการเขียนช่องว่างสี่ช่อง ด้านล่างนี้เป็นตัวอย่างของอินเทอร์เฟซหลอกกราฟิก การหลบหนีอักขระใน Java - 2ในบรรดาลำดับการหลีกเลี่ยงทั้งหมด สัญลักษณ์อาจเป็น\bสิ่งที่น่าสนใจที่สุด เพราะมันช่วยให้เราสามารถลบอักขระตัวสุดท้ายในบรรทัดเอาต์พุตได้ คล้ายกับถ้าเราลบมันโดยการกดปุ่มBackspace .
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
สัญลักษณ์\nมี\rประวัติร่วมกัน - มาดูกัน คุณอาจเคยพบ อักขระตัวแบ่งบรรทัด\nมาก่อน ตัวอย่างเช่น หากวิธีการprintln()ส่งออกข้อมูลเพื่อให้เอาต์พุตถัดไปอยู่บนบรรทัดใหม่ วิธีการนั้นจะprint()ไม่ทำการขึ้นบรรทัดใหม่หลังจากเอาต์พุต แต่ถ้าคุณเพิ่มอักขระที่ส่วนท้ายของเอาต์พุต\nก็จะเป็นการขึ้นบรรทัดใหม่ จะดำเนินการ
System.out.print("Next output will be on a new line\n");
System.out.println("Next output will be on a new line");
อักขระขึ้นบรรทัดใหม่\rช่วยให้เราสามารถคืนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดเอาต์พุตและแสดงข้อมูลใหม่ราวกับว่าไม่มีอะไรในบรรทัดนั้นมาก่อน
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."
ในความเป็นจริง การคืนแคร่ย้อนกลับไปในสมัยที่มีการพิมพ์ข้อความบนเครื่องพิมพ์ดีด ในการป้อนบรรทัดจำเป็นต้องย้ายแคร่และลดคันโยกลง (ส่วนหนึ่งของกลไกเครื่องพิมพ์ดีด) หลังจากนั้นจึงป้อนบรรทัด หากไม่ลดคันโยกลง ก็จะสามารถพิมพ์ต่อในบรรทัดเดียวกันได้ \rนี่คือสิ่งที่เราสังเกตเมื่อเราแสดงสัญลักษณ์ ในเรื่องนี้ เมื่อโปรแกรมเมอร์ต้องการแบ่งบรรทัด เขาจึงใช้ลำดับอักขระที่ส่วนท้ายของเอาต์พุตจนเป็น\r\nนิสัย เมื่อยุคของเครื่องพิมพ์ดีดสิ้นสุดลง มีโปรแกรมเมอร์รุ่นหนึ่งที่ยังคงใช้ลำดับนี้ แม้ว่าพวกเขาจะไม่เคยทำงานกับเครื่องพิมพ์ดีดมาก่อนก็ตาม พวกเขามักจะลืมไปว่าต้องลำดับใดในการดำเนินการตามลำดับที่กำหนด- \r\nหรือ \n\rจากนั้นคำทดสอบก็เข้ามาช่วยเหลือreturnโดยที่ลำดับการแสดงสัญลักษณ์เหล่านี้มองเห็นได้ชัดเจน อย่างไรก็ตาม ในภายหลังเมื่อพัฒนาซอฟต์แวร์สำหรับ Windows เวอร์ชันแรก หลังจาก MS-DOS โปรแกรมเมอร์ถูกบังคับให้ใช้ลำดับ\r\n. ตอนนี้คุณไม่ต้องกังวลเกี่ยวกับเรื่องนี้แล้วใช้เพียงอักขระเพื่อแบ่ง\nบรรทัด การหลบหนีอักขระใน Java - 3ย้อนเวลากลับไปอีกครั้งในช่วงยุค 80 ตอนนั้นเองที่สัญลักษณ์สำหรับหน้าไปข้างหน้า\fจนถึงจุดเริ่มต้นของหน้าถัดไปได้รับความนิยม ในเวลานั้น มีเครื่องพิมพ์แบบเรียงแถวขนาดใหญ่ ซึ่งจำเป็นต้องเขียนโค้ดโปรแกรมโดยระบุว่าเครื่องพิมพ์ควรพิมพ์อะไรและอย่างไร และเพื่อระบุว่าข้อความต้องเริ่มต้นจากหน้าใหม่จึงใช้\fสัญลักษณ์ ในยุคของเรา สัญลักษณ์นี้ได้สูญเสียความเกี่ยวข้องไปนานแล้ว และไม่น่าเป็นไปได้ที่คุณจะได้พบเห็นมันอีก ขนาดของเครื่องพิมพ์เชิงเส้นค่อนข้างน่าประทับใจ การหลบหนีอักขระใน Java - 4ด้วยสัญลักษณ์\’และ\\ทุกอย่างเหมือนกับการหลีกเลี่ยงเครื่องหมายคำพูดคู่ มีตัวอย่างอยู่ที่ตอนต้นของบทความ คุณจะต้องหลีกเลี่ยงเครื่องหมายคำพูดเดี่ยว เพื่อเริ่มต้นประเภทถ่านด้วยเครื่องหมายคำพูดเดี่ยว
char ch = '\'';
อักขระหลีกเครื่องหมายแบ็กสแลชเพื่อระบุว่าอักขระต่อไปนี้จะไม่เป็นส่วนหนึ่งของลำดับการหลีก
System.out.println("\\n - line break escape sequence");
// Output: \n - line break escape sequence
ในทางปฏิบัติ คุณมักจะต้องหลีกเลี่ยงเครื่องหมายแบ็กสแลชเมื่อทำงานกับเส้นทาง:
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"
ฉันเน้นย้ำว่าลำดับหลีกเหล่านี้ใช้ในสตริง (ตัวอักษรสตริง) เนื่องจาก ส่วนที่เหลือใช้เพื่ออธิบายนิพจน์ทั่วไปของคลาสPatternและไม่เกี่ยวข้องกับหัวข้อของบทความนี้ คุณสามารถดูรายการลำดับการหลีกเลี่ยงทั้งหมดสำหรับคลาสได้ที่นี่ Patternอย่างไรก็ตามเป็นที่น่าสังเกตว่าไม่สามารถจินตนาการถึงนิพจน์ทั่วไปในรูปแบบที่มีอยู่ในขณะนี้ได้โดยไม่ต้องใช้ Escape Sequence ไม่เพียงแต่ใน Java เท่านั้น แต่ยังรวมถึงภาษาโปรแกรมยอดนิยมอื่น ๆ เช่น PHP ด้วย ใน Java การหลบหนีอักขระยังใช้ในการจัดรูปแบบสตริงด้วย ตัวอย่างเช่น เมื่อระบุรูปแบบสตริงสำหรับการแสดงสัญลักษณ์เปอร์เซ็นต์ คุณต้องทำซ้ำสัญลักษณ์เปอร์เซ็นต์ - %%มิฉะนั้นเราจะได้รับข้อผิดพลาด และ IDE จะแจ้งให้คุณเพิ่มเปอร์เซ็นต์
System.out.printf("Milk fat percentage : %d%%", 10);
// Milk fat percentage : 10%
นี่เป็นการสรุปบทความ ฉันหวังว่าคุณจะได้เรียนรู้มากมายเกี่ยวกับการหลบหนีของตัวละครและวิธีนำไปปฏิบัติ การหลบหนีอักขระนั้นมีอยู่ในภาษาการเขียนโปรแกรมหลายภาษา ในจาวา เช่นเดียวกับภาษาซีอื่นๆ เทคโนโลยีนี้ถูกนำไปใช้เกือบจะเหมือนกัน ดังนั้นความรู้ที่คุณได้รับจากบทความนี้อาจมีประโยชน์ไม่เพียงแต่ใน java เท่านั้น ขอบคุณสำหรับความสนใจและขอให้โชคดีกับการเรียนของคุณ!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION