添加组合上划线unicode字符

时间:2017-01-15 17:39:14

标签: unicode unicode-string

我正在编写一个将整数转换为罗马数字的程序。

超过3999的罗马数字被标注,因此IV标注为4000,CM标注为900&000;等等。这些行可以叠加。

为了不限制我的程序,仅在3999停止它是不够的。

问题是,如何添加"组合上线" unicode字符到我的字符串来实现这个?

我的程序是用Rust编写的,但我怀疑大多数支持unicode字符串的语言的解决方案都是类似的。

2 个答案:

答案 0 :(得分:1)

只需在每个字符后添加组合标记。

这是一个Python示例。您看到的内容取决于对控制台/ IDE /浏览器中组合标记的支持。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VFPData xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02">
   <Document-BankCD>
      <SubFmlyCd>BOOK</SubFmlyCd>
      <tasusumma>2.50</tasusumma>
      <raha>EUR</raha>
   </Document-BankCD>
</VFPData>

输出(图像和文字)

  

Roman Numeral 4000 image(图片)I̅V̅(文字)

在测试中,U + 0305 COMBINING OVERLINE最多可以叠加两个,但Chrome在三个时间内绘制错误。还有U + 033F COMBINING DOUBLE OVERLINE。

答案 1 :(得分:1)

您可以在字符串常量中使用它们,使用Unicode转义序列(此处显示为Rust)或直接(因为它们可以在UTF-8源代码文件中轻松表示):

    println!("I\u{0305}V\u{0305} - I̅V̅");

但请注意,每个带有上划线的字母都需要两个Unicode代码点。所以他们不适合单char。您需要使用string

组合上划线字符本身适合单个字符:

let combining_overline = '\u{0305}';

要应用它,请将其插入需要上线的基本字符之后。