【发布时间】:2012-03-19 04:49:49
【问题描述】:
如何使用正则表达式将 Unicode 数字下标或上标(例如₂)替换为相应的数字(即2)?我当然可以分别替换它们,但那是十行代码......
我在 Perl 中实现了这一点,但这并不重要。
【问题讨论】:
-
使用
ord函数怎么样,例如2 (u2802) => 50 -
$x =~ tr/1234/abcd/ # convert 1 → a, 2 → b, 3 → c, 4 → d -
当我这样做 $x =~ tr/₂₃/23/ 时,CO₂ 之类的简单物质会转化为 CO233。
-
正如我在对 tchrist 的回答的评论中已经提到的那样,添加
use utf8使tr/₂₃/23/对 Perl 脚本中定义的字符串正常工作。添加use open qw[:std IO :utf8]使其也适用于从其他来源读取的字符串。
标签: regex perl unicode superscript unicode-normalization