ตัวอักษรแบบมีหรือไม่มีช่องว่าง ฟอร์มนับแบบไหน
ฟอร์ม เว็บหางาน SMS หรือโพสต์โซเชียล มักนับตัวอักษรด้วยวิธีใดวิธีหนึ่งจากสองแบบ คือนับรวมช่องว่าง หรือนับโดยไม่รวมช่องว่าง ให้อ่านป้ายกำกับหรือข้อความช่วยเหลือของช่องกรอกก่อน เพราะมักระบุไว้ หากไม่ระบุทั้งสองแบบ ให้ใช้วิธีที่เข้มงวดกว่า ซึ่งมักเป็นการนับแบบไม่มีช่องว่าง อีโมจิและอักษรที่มีเครื่องหมายกำกับบางตัวก็อาจนับเป็นมากกว่าหนึ่งตัวอักษรในระบบที่วัดข้อความเป็นหน่วยโค้ดหรือไบต์ ดังนั้นข้อความอาจผ่านในเครื่องมือหนึ่งแต่ไม่ผ่านในอีกเครื่องมือหนึ่งก็ได้ ควรนับด้วยเครื่องมือที่ใช้กฎเดียวกับฟอร์ม
ตัวนับคำข้อความของฉันเกินลิมิตหรือเปล่า?ใช้ฟรีนับรวมหรือไม่รวมช่องว่าง
- นับรวมช่องว่าง คือนับทุกสิ่งที่พิมพ์ รวมถึงช่องว่างแต่ละช่อง เป็นหนึ่งตัวอักษรเท่ากันหมด
- นับโดยไม่รวมช่องว่าง คือตัดช่องว่างทุกชนิดออกก่อนนับ ทำให้คำต่อกันไป ค่าที่แสดงของเครื่องนับคำในโหมดนี้จะตัดอักขระว่างทุกตัวออก รวมถึงการขึ้นบรรทัดใหม่ แท็บ และช่องว่างที่ไม่ตัดคำ แล้วนับสิ่งที่เหลือ
"Hello world" มี 11 ตัวอักษรเมื่อรวมช่องว่าง และ 10 ตัวเมื่อไม่รวม ฟอร์มที่ถามจำนวนตัวอักษรโดยไม่รวมช่องว่างต้องการตัวเลขตัวที่สอง
ทำไมอีโมจิตัวเดียวอาจนับเป็นสอง
ข้อความมีความยาวสองแบบ แบบแรกคือความยาวที่คนเห็น ซึ่งเรียกว่ากลุ่มอักขระ (grapheme cluster) เป็นตัวอักษรที่มองเห็นหนึ่งตัว แม้จะประกอบจากหลายโค้ดพอยต์ก็ตาม แบบที่สองคือสิ่งที่คอมพิวเตอร์เก็บไว้ ความยาวของสตริงใน JavaScript และระบบเก่าหลายระบบนับเป็นหน่วยโค้ด UTF-16 ตัวอักษรส่วนใหญ่ใช้หนึ่งหน่วย แต่อักขระที่อยู่นอก Basic Multilingual Plane รวมถึงอีโมจิหลายตัว ใช้สองหน่วย อีโมจิยกนิ้วโป้ง U+1F44D ดูเหมือนตัวอักษรหนึ่งตัว แต่มีสองหน่วย UTF-16 ดังนั้นตัวนับที่ใช้หน่วยโค้ดจะแสดง 2
เครื่องนับคำนับตัวอักษรที่มองเห็น อีโมจิยกนิ้วโป้งจึงนับเป็น 1 อีโมจิรูปครอบครัวก็นับเป็น 1 แม้จะประกอบจากหลายโค้ดพอยต์ที่เชื่อมด้วยตัวเชื่อมความกว้างศูนย์ ฟอร์มที่นับเป็นหน่วยโค้ดจะแสดงตัวเลขมากกว่า และความต่างจะเพิ่มขึ้นตามจำนวนอีโมจิในข้อความ
อักษรที่มีเครื่องหมายกำกับ
ตัวอักษร é เก็บได้สองแบบ แบบแรกเป็นโค้ดพอยต์เดียว U+00E9 ซึ่งเป็นหนึ่งหน่วยในทุกที่ แบบที่สองเป็นตัว e ตามด้วยเครื่องหมายเน้นเสียง U+0301 ซึ่งเป็นสองโค้ดพอยต์และสองหน่วย ทั้งสองแบบดูเหมือนกันบนหน้าจอ ตัวนับที่นับโค้ดพอยต์หรือหน่วยจะให้ 2 สำหรับแบบที่สอง ส่วนเครื่องนับคำให้ 1 ทั้งสองแบบ
ขีดจำกัดแบบไบต์ทำให้ต่างออกไปอีก ใน UTF-8 é ใช้สองไบต์ และอีโมจิส่วนใหญ่ใช้สี่ไบต์ ช่องที่จำกัดจำนวนไบต์อาจใส่อักษรมีเครื่องหมายกำกับหรืออีโมจิได้น้อยกว่าที่จำนวนตัวอักษรบอก เครื่องนับคำไม่แสดงไบต์ จึงต้องประมาณแยกต่างหาก
การขึ้นบรรทัดใหม่และอักขระที่มองไม่เห็น
การขึ้นบรรทัดใหม่เป็นหนึ่งตัวอักษรในกล่องพิมพ์ แต่ระบบหลายแห่งเก็บการขึ้นบรรทัดใหม่แบบ Windows เป็นสองตัวอักษร คือ carriage return และ line feed และการส่งฟอร์มบนเว็บก็ส่งการขึ้นบรรทัดใหม่ในรูปแบบนี้ ดังนั้นการนับบนเซิร์ฟเวอร์อาจได้ตัวเลขสูงกว่าที่กล่องแสดง คือเพิ่มขึ้นหนึ่งต่อการขึ้นบรรทัดใหม่แต่ละครั้ง ควรนับข้อความในรูปแบบที่จะถูกส่งจริง ไม่ใช่แค่ดูจากที่พิมพ์
ช่องว่างความกว้างศูนย์ทำงานต่างออกไป การนับแบบไม่มีช่องว่างไม่ถือว่าเป็นช่องว่าง จึงยังคงอยู่ในตัวเลขและทำให้ตัวเลขสูงเกินจริง ให้ลบอักขระที่มองไม่เห็นก่อน เครื่องมือนั้นจะคงแท็บและการขึ้นบรรทัดใหม่ไว้ และเปลี่ยนช่องว่างที่ไม่ตัดคำเป็นช่องว่างปกติ ซึ่งการนับแบบไม่มีช่องว่างจะตัดออกได้ คู่มืออักขระที่มองไม่เห็นอธิบายว่าอักขระเหล่านี้มาจากไหน
ข้อความเดียว ห้าค่านับ
ลองใช้คำว่า "Café" ตามด้วยช่องว่างและอีโมจิยกนิ้วโป้ง U+1F44D โดย é เก็บเป็นโค้ดพอยต์เดียว วิธีวัดต่างกันให้ผลรวมต่างกัน:
| วิธีวัด | จำนวน |
|---|---|
| ตัวอักษรที่มองเห็น รวมช่องว่าง (เครื่องนับคำ) | 6 |
| โค้ดพอยต์ | 6 |
| หน่วยโค้ด UTF-16 (ความยาวใน JavaScript) | 7 |
| ไบต์ UTF-8 | 10 |
| ตัวอักษรที่มองเห็น ไม่รวมช่องว่าง (เครื่องนับคำ) | 5 |
แต่ละผลรวมถูกต้องตามวิธีวัดของตัวเอง ฟอร์มเป็นผู้กำหนดว่าจะใช้วิธีวัดใด ดังนั้นกฎสำคัญกว่าตัวเลขตัวใดตัวหนึ่ง
ขั้นตอน
- อ่านกฎก่อนว่านับเป็นตัวอักษร ไบต์ หรือคำ และนับช่องว่างหรือไม่
- ทำความสะอาดข้อความด้วยลบอักขระที่มองไม่เห็น เพื่อไม่ให้อักขระที่มองไม่เห็นทำให้ตัวเลขสูงขึ้น
- วางข้อความในเครื่องนับคำ แล้วอ่านค่าตัวอักษรและตัวอักษรที่ไม่รวมช่องว่าง แถวขีดจำกัดแสดงขีดจำกัดทั่วไป แต่ตัวเลขที่ควรใช้คือตัวเลขที่ฟอร์มนับ
- หากฟอร์มนับเป็นไบต์ ให้ประมาณไบต์แยกต่างหากตามที่อธิบายข้างต้น
- หากฟอร์มแสดงตัวนับสดของตัวเอง ให้เชื่อตัวเลขนั้นมากกว่าของคุณ และใช้เครื่องมือนี้เพื่อดูว่าทำไมสองค่าจึงต่างกัน
- หากกฎยังไม่ชัดเจน ให้เว้นพื้นที่ไว้เผื่อ ขีดจำกัดจำนวนคำ ครอบคลุมคำถามเดียวกันสำหรับจำนวนคำและกฎของแพลตฟอร์ม
กรณีพิเศษ
- กฎของแพลตฟอร์มมาก่อนเสมอ หากแพลตฟอร์มมีตัวนับของตัวเอง ให้ใช้ตัวเลขของแพลตฟอร์มแทนตัวนับทั่วไป
- ช่องว่างท้ายข้อความ ฟอร์มอาจตัดช่องว่างที่ปลายช่องกรอกหรือไม่ก็ได้ ช่องว่างท้ายเพียงหนึ่งช่องก็เปลี่ยนตัวเลขได้หนึ่ง
- ข้อความที่คัดลอกมา ข้อความที่คัดลอกจากหน้าเว็บอาจมีช่องว่างที่ไม่ตัดคำและอักขระที่มองไม่เห็น ให้ทำความสะอาดด้วยลบอักขระที่มองไม่เห็นก่อนนับ
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


