ดูเหมือนว่าวิธีที่ดีที่สุดที่จะได้รับความถูกต้องก็คือการป้องกันไม่ให้โปรแกรมเมอร์ทำ "การแฮ็คสตริง" ... ไม่สามารถเขียนคำห่อคำยัติภังค์จำนวนคำการให้เหตุผลการเคลื่อนไหวของเคอร์เซอร์ ฯลฯ เฟรมเวิร์ก UI ที่ทันสมัยทั้งหมดจะทำสิ่งนี้ให้คุณในวันนี้
นั่นคือสิ่งที่เป็นนามธรรมที่คุณมักจะทำงานด้วยคือ "วัตถุแสดงย่อหน้า" มากกว่าเช่นสำหรับ GTK:
http://library.gnome.org/devel/pango/stable/pango-Layout-Objects.html
มากกว่าสตริงกราฟเช่น:
http://library.gnome.org/devel/pango/stable/pango-Glyph-Storage.html
ในการไปที่สตริงของ glyphs คุณต้องมีข้อมูลที่มีเฉพาะในระดับ "มุมมอง" ดังนั้นการใช้สตริงส่วนใหญ่จึงอาจไม่มีข้อมูลนี้ ตัวอย่างเช่นคุณต้องรู้ว่าตัวอักษรเพราะแบบอักษรสามารถมีลิ้นที่แตกต่างกัน
นอกเหนือจากเรื่องการปฏิบัติประเภทนั้นแล้วร่ายมนตร์อาจไม่ใช่สิ่งที่คุณต้องการ
ในบริบทจำนวนมากคุณต้องการใช้แอตทริบิวต์ Unicode ที่เหมาะสมซึ่งแสดงใน API นี้ตัวอย่าง:
http://library.gnome.org/devel/pango/stable/pango-Text-Processing.html#PangoLogAttr
อย่างที่คุณเห็นจากโครงสร้างนั้น (ซึ่งสะท้อนให้เห็นถึงอัลกอริธึม Unicode) การทำสิ่งต่าง ๆ ที่ขอบเขตสัญลักษณ์ไม่ได้ถูกต้องมากไปกว่าการทำที่ขอบเขตอักขระ
รายละเอียดทั้งสองนี้อธิบายอัลกอริทึมเพื่อค้นหาขอบเขตที่แตกต่าง:
การประมวลผลข้อความเกี่ยวข้องกับการค้นหาขอบเขตเหล่านั้นด้วยอัลกอริธึมแล้วทำงานกับขอบเขต
หากคุณเริ่มต้นค้นหาว่ามันยากแค่ไหนในการจัดการทุกภาษาอย่างถูกต้องคุณจะรู้ได้อย่างรวดเร็วว่าคุณต้องการห้องสมุดที่มีทั้งย่อหน้าและจัดการอย่างถูกต้อง Windows, Mac, Linux (Qt และ GTK) และ Java ทั้งหมดมาพร้อมกับสิ่งอำนวยความสะดวกสำหรับสิ่งนี้รวมถึงตัวอย่างเช่นhttp://site.icu-project.org/
เมื่อเขียนเว็บแอปโชคไม่ดีที่คุณต้องปล่อยให้เบราว์เซอร์ (อาจช่วยโดยระบบปฏิบัติการ) ทำสิ่งนี้เท่าที่ฉันรู้ สิ่งที่คุณสามารถทำได้ใน JavaScript หรือในฝั่งเซิร์ฟเวอร์ก็ทำให้ยุ่งเหยิง
บางทีฉันอาจจะสรุปคำตอบว่า: การจัดการสตริงส่วนใหญ่ในข้อความภาษาธรรมชาติเสียดังนั้นจึงไม่ค่อยมีความกังวลเกี่ยวกับคลาสสตริงนอกจากจะมีวิธีที่ไม่มีเมท็อด ;-)