完全纠正Unicode视觉字符串反转

时间:2013-05-18 21:34:11

标签: unicode language-agnostic

[主要是通过尝试用Character Encoding independent character swap解释问题来启发,但这些其他问题都不包含完整答案:How to reverse a Unicode stringHow to get a reversed String (unicode safe)]

在Unicode中进行可视化字符串反转比看起来要困难得多。在UTF-32以外的任何存储格式中,您必须注意码点边界而不是逐字节。但由于结合了字形,这还不够好;规范有一个“字形集群”的概念,它更接近你想要逆转的基本单位。但那仍然不够好;有各种特殊情况字符,如比迪烟覆盖和最终形式,必须修复。

这个伪算法处理我所知道的所有简单案例:

  
      
  1. 将字符串细分为单词和字分隔符的交替列表(某些字分隔符可能是空字符串)
  2.   
  3. 颠倒此列表的顺序。
  4.   
  5. 对于列表中的每个字符串:      
        
    1. 将字符串细分为字形集群。
    2.   
    3. 颠倒字形簇的顺序。
    4.   
    5. 按相反顺序检查初始和最终聚类;他们的基本字符可能需要重新分配到正确的形式(例如,如果U + 05DB HEBREW LETTER KAF现在处于序列的最后,它需要成为U + 05DA HEBREW LETTER FINAL KAF,反之亦然)
    6.   
    7. 将序列重新加入字符串。
    8.   
  6.   
  7. 重新组合反转单词列表以生成最终反转字符串。
  8.   

...但是它没有处理比迪烟覆盖,而且我确信还有我不知道的东西。任何人都可以填补空白吗?

0 个答案:

没有答案