§

วางข้อความ

§

ทุกรูปแบบตัวพิมพ์

text
  • camelCase
  • PascalCase
  • snake_case
  • CONSTANT_CASE
  • kebab-case
  • dot.case
  • path/case
  • Title Case
  • Sentence case
  • lower case
  • UPPER CASE

ระเบียบตัวพิมพ์เป็นเสียงของทุก codebase ในประเทศไทย ทีมวิศวกรที่ Sea Group Thailand บังคับ camelCase กับตัวแปร JavaScript และ CONSTANT_CASE กับค่าคงที่ใน pipeline CI ของ KBank Tech และ SCB Tech X ขณะที่ทีม Python ที่ Wongnai และ LineMan Wongnai ใช้ snake_case ตาม PEP 8 นักศึกษาวิทยาการคอมพิวเตอร์ที่จุฬาลงกรณ์ มหาวิทยาลัย KMUTT และมหิดล เรียนแนวเดียวกัน ชุมชน ThaiOSS อ้างถึง kebab-case สำหรับ slug URL และ dot.case สำหรับ YAML config ทีม Android และ iOS ที่ AIS และ dtac ตกลง PascalCase สำหรับ Kotlin class และ Swift struct ส่วน Wongnai ใส่กฎเหล่านี้ใน ESLint, Prettier และ Detekt internal config — กฎเดียวกับที่ tech-lead ที่ KBank Tech, Krungsri Innovate และ TrueMoney Tech ใช้เพื่อให้ทีม backend และ frontend สื่อสารกันได้

การแปลงตัวพิมพ์ข้อความคืออะไร?

การแปลงตัวพิมพ์ข้อความรับสตริงอินพุตและสร้างคำเดียวกันออกมาในระเบียบตัวพิมพ์ที่แตกต่าง เป้าหมายที่พบบ่อยที่สุดคือ camelCase และ PascalCase (ใช้สำหรับตัวระบุในภาษาวงเล็บปีกกาส่วนใหญ่), snake_case และ CONSTANT_CASE (Python, Ruby, Rust, มาโคร C), kebab-case (URL, ชื่อคลาส CSS, แอตทริบิวต์ HTML, ชื่อแพ็กเกจ npm), dot.case (คีย์การตั้งค่า, เส้นทางอ็อบเจ็กต์ JavaScript), path/case (ตัวระบุสไตล์ไฟล์ซิสเต็ม), Title Case และ Sentence case (หัวเรื่องและร้อยแก้ว) บวกกับ lower case และ UPPER CASE เต็มรูปแบบ ตัวแปลงนี้ตรวจจับขอบเขตคำธรรมชาติในอินพุตของคุณ — ช่องว่าง, ขีดกลาง, ขีดล่าง, จุด, สแลช, และการเปลี่ยนผ่าน lowercase→uppercase ที่ทำเครื่องหมายตัวระบุสไตล์ helloWorld — และประกอบใหม่ด้วยตัวคั่นและรูปแบบการขึ้นต้นพิมพ์ใหญ่ที่แต่ละกรณีเป้าหมายต้องการ

การแปลงตัวพิมพ์ทำงานอย่างไร?

อินพุตของคุณถูกประมวลผลทั้งหมดในเบราว์เซอร์โดยใช้ tokeniser vanilla JavaScript ขนาดเล็กและตัวจัดรูปแบบ 11 แบบ ขั้นตอนระดับสูงคือ:

  1. อินพุตของคุณถูกอ่านตรงตามตัวอักษรจาก textarea — ทุกไบต์ที่คุณวางถูกเก็บไว้ในหน่วยความจำท้องถิ่น
  2. tokeniser แบ่งอินพุตที่ช่องว่าง, ขีดล่าง, ขีดกลาง, จุด, และสแลช จากนั้นแบ่งแต่ละชิ้นเพิ่มเติมที่ขอบเขต lowercase→uppercase (ดังนั้น helloWorld กลายเป็น ["hello", "World"]) และที่ขอบเขตตัวอักษร↔ตัวเลข (ดังนั้น v2API กลายเป็น ["v", "2", "API"])
  3. token ว่างเปล่าถูกกรองออกและ token ที่เหลือถูกแปลงเป็นตัวพิมพ์เล็กโดยใช้ String.prototype.toLocaleLowerCase เพื่อให้ตัวอักษร Unicode ในภาษาตุรกี, เยอรมัน และ locale อื่นๆ ถูกรักษาไว้อย่างถูกต้อง
  4. จากนั้นตัวจัดรูปแบบทั้ง 11 ประกอบ token เป็นแต่ละกรณีเป้าหมาย — camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, path/case, Title Case (พร้อมรายการ small-words เพื่อให้ and, the, of ฯลฯ คงเป็นตัวพิมพ์เล็กยกเว้นเมื่อเป็นคำแรกหรือคำสุดท้าย), Sentence case, lower case เต็มรูปแบบ และ UPPER CASE เต็มรูปแบบ
  5. เอาต์พุตถูกเขียนหนึ่งแถวต่อหนึ่งกรณีในตารางผลลัพธ์; แต่ละแถวมีปุ่มคัดลอกของตัวเองที่ใช้ Clipboard API แบบ asynchronous พร้อม fallback แบบ synchronous document.execCommand('copy') สำหรับเบราว์เซอร์รุ่นเก่า

ทำไมต้องใช้ตัวแปลงตัวพิมพ์?

  • รีแฟกเตอร์ตัวระบุ: เปลี่ยนชื่อตัวแปร JavaScript จาก user_id เป็น userId, ฟังก์ชัน Python จาก helloWorld เป็น hello_world, หรือค่าคงที่ Rust จาก maxBuffer เป็น MAX_BUFFER โดยไม่ต้องแก้ไขทีละอักขระด้วยตนเอง
  • แปลงคีย์การตั้งค่า: พลิก JSON config เต็มไปด้วยคีย์ camelCase ไปยัง snake_case YAML สำหรับบริการ Python หรือไปยัง kebab-case สำหรับ Helm chart ในการวางครั้งเดียว
  • เขียนหัวข่าว: วางร่างหัวข่าวและอ่านรูปแบบ Title Case (พร้อมข้อยกเว้น small-words ของ Chicago Manual of Style) ข้างกับรูปแบบ Sentence case (AP Stylebook) — เลือกตามที่สิ่งพิมพ์ของคุณใช้
  • สร้าง URL slug: วางหัวข้อโพสต์บล็อกและคัดลอกรูปแบบ kebab-case ลงในช่อง slug ของ CMS ของคุณโดยตรง — tokeniser จัดการเครื่องหมายวรรคตอนและวลีหลายคำโดยไม่ทิ้งตัวคั่นที่หลงเหลือ

การประยุกต์ใช้ทั่วไปของการแปลงตัวพิมพ์คืออะไร?

การสลับระหว่างระเบียบตัวพิมพ์ปรากฏในวิศวกรรมซอฟต์แวร์, การสร้างเนื้อหา และวิศวกรรมข้อมูล:

  • การรีแฟกเตอร์โค้ด: เปลี่ยนชื่อตัวระบุข้าม codebase เมื่อ style guide เปลี่ยนแปลง (เช่น JavaScript camelCase → Python snake_case ระหว่างการเขียน backend ใหม่) โดยไม่แนะนำ typo
  • ปรับรูปแบบ payload API: แปลงคีย์ JSON camelCase เป็น snake_case ก่อนป้อนให้ backend Ruby on Rails หรือ Django หรือเป็น kebab-case สำหรับชื่อคลาส CSS-in-JS
  • การสร้างหัวข่าวและ slug: ผลิตหัวข้อหน้า Title Case, meta description Sentence case, และ URL slug kebab-case จากหัวข่าวต้นทางเดียวกันในขั้นตอนเดียว

ตัวอย่างการแปลงตัวพิมพ์เป็นอย่างไร?

วาง Hello World API ลงในอินพุต ตารางผลลัพธ์เรนเดอร์สิบเอ็ดแถวพร้อมกัน: helloWorldApi (camelCase), HelloWorldApi (PascalCase), hello_world_api (snake_case), HELLO_WORLD_API (CONSTANT_CASE), hello-world-api (kebab-case), hello.world.api (dot.case), hello/world/api (path/case), Hello World Api (Title Case), Hello world api (Sentence case), hello world api (lower case), และ HELLO WORLD API (UPPER CASE) อินพุตเดียวกันที่วางเป็น helloWorldAPI ก็ tokenise เป็นสามคำเดียวกัน — ตัวตรวจจับขอบเขต lowercase→uppercase จัดการรูปแบบนั้นได้ด้วย

สิ่งนี้ทำงานในเบราว์เซอร์ของฉันหรือไม่?

ใช่ tokeniser และตัวจัดรูปแบบทั้ง 11 มีประมาณ 120 บรรทัดของ vanilla JavaScript ที่ทำงานอยู่ภายในแท็บเบราว์เซอร์ ไม่มีการอัปโหลด ไม่มี service worker มาแทรกอินพุตของคุณ และหน้าทำการร้องขอเครือข่ายเป็นศูนย์สำหรับขั้นตอนการแปลงเอง การจราจรขาออกเพียงอย่างเดียวคือสินทรัพย์การโหลดหน้ามาตรฐาน (CSS, ฟอนต์, การวิเคราะห์) — ข้อความของคุณไม่เคยถึง Ultim8Soft

ฉันควรใช้รูปแบบตัวพิมพ์ใดสำหรับชื่อตัวแปร?

ขึ้นอยู่กับภาษาและ style guide ของทีม codebase JavaScript และ TypeScript ใช้ camelCase อย่างท่วมท้นสำหรับตัวแปรและฟังก์ชัน, PascalCase สำหรับคลาสและคอมโพเนนต์ React และ CONSTANT_CASE สำหรับชื่อตัวแปรสภาพแวดล้อมและค่าคงที่ระดับโมดูล — Google JavaScript style guide และ Airbnb style guide ทั้งคู่ตรึงตัวเลือกเหล่านั้น Python (PEP 8), Ruby และ Rust ชอบ snake_case สำหรับตัวแปรและฟังก์ชัน, PascalCase สำหรับคลาส และ CONSTANT_CASE สำหรับค่าคงที่ระดับโมดูล codebase C และ C++ (Linux kernel, LLVM) เอนไปทาง snake_case สำหรับฟังก์ชันและ CONSTANT_CASE สำหรับ preprocessor มาโคร เมื่อสงสัย รัน linter หรือ formatter ของทีมคุณ — มันจะบอกว่าระเบียบใดถูกบังคับใช้

อินพุตถูก tokenise อย่างไร?

tokeniser แบ่งอินพุตที่ run ใดๆ ของช่องว่าง, ขีดล่าง (_), ขีดกลาง (-), จุด (.), หรือสแลช (/) ก่อน แต่ละชิ้นที่ได้จะถูกแบ่งอีกครั้งที่ขอบเขต lowercase→uppercase (ดังนั้น helloWorld กลายเป็น ["hello", "World"]) และที่ขอบเขตตัวอักษร↔ตัวเลข (ดังนั้น v2API กลายเป็น ["v", "2", "API"]) token ว่างเปล่าถูกกรองออกและ token ที่เหลือถูกแปลงเป็นตัวพิมพ์เล็กผ่าน String.prototype.toLocaleLowerCase ตัวจัดรูปแบบจากนั้นทำการขึ้นต้นพิมพ์ใหญ่ใหม่และเชื่อม token ใหม่ด้วยตัวคั่นที่แต่ละกรณีเป้าหมายต้องการ กลยุทธ์นี้จัดการรูปแบบตัวระบุทั่วไปทั้งหกแบบ — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, และร้อยแก้วที่คั่นด้วยช่องว่างธรรมดา — ทันที

แล้วอักขระ Unicode / ที่ไม่ใช่ ASCII ล่ะ?

ตัวอักษร Unicode รอดจากการเดินทางไปกลับ tokeniser ใช้ String.prototype.toLocaleLowerCase และ toLocaleUpperCase ซึ่งให้เกียรติกฎการขึ้นต้นพิมพ์ใหญ่เฉพาะ locale — i มีจุดเทียบกับไม่มีจุดในภาษาตุรกี, ß เยอรมันที่ขึ้นต้นพิมพ์ใหญ่เป็น SS, ตัวอักษรละตินที่มีเครื่องหมายเน้นในภาษาฝรั่งเศสและสเปน และอื่นๆ อักขระที่ไม่ใช่ตัวอักษรซึ่งไม่อยู่ในชุดตัวคั่น (ช่องว่าง, _, -, ., /) — ตัวอย่างเช่นตัวเลข, ตัวอักษรที่มีเครื่องหมายเน้น, หรืออักขระ CJK — ถูกเก็บไว้ภายใน token ที่ปรากฏและตัวจัดรูปแบบส่งออกตามตัวอักษร นั่นหมายความว่าอินพุตเช่น nœud_principal tokenise เป็น ["nœud", "principal"] และแปลงสะอาดเป็น nœudPrincipal (camelCase) หรือ NœudPrincipal (PascalCase)

ตัวแปลงตัวพิมพ์นี้เป็นหน้า static เดียวที่รัน tokeniser และตัวจัดรูปแบบทั้ง 11 ทั้งหมดในเบราว์เซอร์ของคุณ — ไม่มีไลบรารี vendor, ไม่มีการเรียกเครือข่ายต่อการแปลง, ไม่มีบัญชี วางข้อความใดก็ได้ด้านบน, สแกนเอาต์พุตทั้ง 11 รูปแบบเคียงข้างกัน, และคัดลอกตัวที่คุณต้องการ