ข้อความ

String Escape

แปลงข้อความเป็น string literal ด้วยการ escape (เครื่องหมายคำพูด แบ็กสแลช อักขระควบคุม) เพื่อวางในโค้ด หรือ unescape กลับ

รูปแบบเครื่องหมายคำพูด

                    

To put text containing quotes, line breaks, or backslashes inside a string literal in code, those characters need escaping — otherwise they'll end the string early or get misinterpreted. This tool escapes and unescapes text for a specific syntax.

How to use it

Common uses

Things to keep in mind

The same character (a double quote, for example) is escaped differently depending on context — a JS string, JSON, and a shell each have their own syntax and their own set of special characters.

Double-escaping (escaping already-escaped text) is a common mistake when passing data through multiple layers, like JSON nested inside a shell command.

บทความเกี่ยวกับเครื่องมือนี้: การ Escape สตริง: ทำไมกฎถึงต่างกันใน JS, JSON, shell และ regex

คำถามที่พบบ่อย

การ escape ทำอะไรกันแน่?

แปลงเครื่องหมายคำพูด แบ็กสแลช และอักขระควบคุม (เช่น การขึ้นบรรทัดใหม่หรือแท็บ) เป็นลำดับ escape ที่ถูกต้องภายใน string literal เพื่อให้ข้อความสามารถวางลงในซอร์สโค้ดได้ตามที่เป็นอยู่

ตัวเลือกรูปแบบเครื่องหมายคำพูดและ unicode ใช้ทำอะไร?

รูปแบบเครื่องหมายคำพูด (คู่ เดี่ยว หรือ backtick) กำหนดว่าอักขระใดจะถูก escape เพื่อไม่ให้ทำลาย string และตัวเลือก \uXXXX แปลงอักขระที่ไม่ใช่ ASCII เป็นลำดับ unicode ที่ escape แล้วแทนที่จะปล่อยไว้ตามเดิม

ข้อความที่วางถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?

ไม่ การ escape และการยกเลิก escape ทำงานทั้งหมดในเบราว์เซอร์ผ่าน JavaScript ไม่มีข้อมูลใดถูกส่งออนไลน์

ต้องทำอย่างไรถ้าข้อความต้องผ่านหลายบริบทติดต่อกัน?

ต้อง escape ตามลำดับที่ถูกต้อง: ก่อนอื่นสำหรับบริบทชั้นใน (เช่น JSON) แล้วจึงสำหรับบริบทชั้นนอก (เช่นคำสั่ง shell ที่ JSON นั้นถูกแทรกเข้าไป) การสลับลำดับหรือข้ามชั้นใดชั้นหนึ่งเป็นสาเหตุทั่วไปที่ทำให้สตริงที่ "escape ถูกต้อง" ยังคงพังในทางปฏิบัติ

ทำไมเครื่องหมายคำพูดตัวเดียวกันถึง escape ต่างกันในแต่ละบริบท?

แต่ละบริบท (สตริง JS, JSON, shell, regex) มีไวยากรณ์ของตัวเองพร้อมชุดอักขระพิเศษและวิธี escape ของตัวเอง ดังนั้นการ escape ที่ถูกต้องจึงขึ้นอยู่กับว่าข้อความถูกแทรกไปที่ไหน ไม่ใช่ขึ้นอยู่กับตัวข้อความเอง

บทความ: ข้อความ

camelCase, snake_case, kebab-case: ควรใช้รูปแบบไหนเมื่อไหร่

เหตุใดจึงมี camelCase, snake_case และ kebab-case และแต่ละแบบมักใช้ที่ไหน

Text Diff: อัลกอริทึมหาความแตกต่างของข้อความทำงานอย่างไร

อัลกอริทึม diff หาชุดการเปลี่ยนแปลงที่น้อยที่สุดระหว่างข้อความสองเวอร์ชันได้อย่างไร

Regular Expression: พื้นฐานและกับดักของการจับคู่แบบโลภ

ความแตกต่างระหว่างการจับคู่แบบโลภและแบบขี้เกียจใน regex และเหตุใดจึงสำคัญในทางปฏิบัติ

การเรียงบรรทัด: ทำไมการเรียงตามตัวอักษรถึงต่างจากการเรียงตามตัวเลข

เหตุใดการเรียงตามตัวอักษรจึงปฏิบัติต่อตัวเลขเหมือนข้อความ และต่างจากการเรียงตามตัวเลขอย่างไร

CRLF กับ LF: ทำไมการขึ้นบรรทัดใหม่ยังคงสร้างปัญหา

ความแตกต่างระหว่าง CRLF กับ LF มาจากไหน และเหตุใดยังคงสร้างปัญหากับ git และสคริปต์

การนับตัวอักษรและคำ: ทำไม Unicode ทำให้ซับซ้อน

เหตุใดอิโมจิหนึ่งตัวที่เห็นด้วยตาจึงอาจประกอบด้วย code point หลายตัวใน Unicode

Lorem Ipsum: ข้อความหลอกนี้มาจากไหนและทำไมไม่มีความหมาย

ข้อความ Lorem Ipsum มาจากไหนจริง ๆ และเหตุใดจึงใช้ข้อความไร้ความหมายแทนข้อความจริง

Slugify: หัวข้อกลายเป็น URL ที่ใช้งานได้อย่างไร

หัวข้อบทความกลายเป็น URL ที่สะอาดและอ่านง่ายด้วยเครื่องหมายขีดได้อย่างไร

Markdown: ทำไมจึงกลายเป็นมาตรฐานของเอกสาร

เหตุใด Markdown จึงยังอ่านง่ายแม้ในรูปแบบดิบ ต่างจาก HTML

ช่องว่างที่มองไม่เห็น: ทำไมการเปรียบเทียบข้อความที่ดูเหมือนกันจึงล้มเหลว

ช่องว่างที่มองไม่เห็นเพียงตัวเดียวทำให้การเปรียบเทียบข้อความสองชิ้นที่ดูเหมือนกันล้มเหลวได้อย่างไร

การกลับข้อความ: ทำไมจึงพังกับอิโมจิ

เหตุใดการกลับข้อความแบบง่ายจึงทำให้อิโมจิที่ประกอบจาก code point หลายตัวพังไป

การวิเคราะห์ความถี่ข้อความ: จาก word cloud สู่การถอดรหัส

การวิเคราะห์ความถี่ตัวอักษรช่วยถอดรหัสแบบแทนที่อักษรง่าย ๆ ในอดีตได้อย่างไร