[英]How to replace UTF-8 characters with their character names in Ruby?
我想創建Unicode字符到字符[az]和[0-9]的雙向映射。 我想過使用像@ Curly Bracket這樣的Unicode字符名稱{ 。 遺憾的是,我找不到所有UTF-8字符的列表,其中的字符描述已准備好在Ruby中訪問。 Wikipedia包含Unicode字符 列表,Unicode Consortium有一個Unicode名稱列表 。 在我開始為列表編寫解析器之前,我想問:
您可以嘗試使用unicode utils gem
require "unicode_utils/char_name"
UnicodeUtils.char_name "ᾀ" => "GREEK SMALL LETTER ALPHA .."
對於替代品,請在Ruby工具箱中查找“unicode ..”
unicode gem看起來很有前途
Unicode::decompose(str)
uniscribe gem可以滿足您的要求,並且可以處理當前Unicode版本的數據。 從Ruby,您可以像這樣使用它:
require "uniscribe/kernel_method"
uniscribe "𝕸𝖎𝖘𝖈 𝖀𝖓𝖎𝖈𝖔𝖉𝖊 𝕮𝖍𝖆𝖗𝖆𝖈𝖙𝖊𝖗𝖘"
這將導致以下輸出:
1D578 ├─ 𝕸 ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL M
1D58E ├─ 𝖎 ├─ MATHEMATICAL BOLD FRAKTUR SMALL I
1D598 ├─ 𝖘 ├─ MATHEMATICAL BOLD FRAKTUR SMALL S
1D588 ├─ 𝖈 ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
0020 ├─ ] [ ├─ SPACE
1D580 ├─ 𝖀 ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL U
1D593 ├─ 𝖓 ├─ MATHEMATICAL BOLD FRAKTUR SMALL N
1D58E ├─ 𝖎 ├─ MATHEMATICAL BOLD FRAKTUR SMALL I
1D588 ├─ 𝖈 ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
1D594 ├─ 𝖔 ├─ MATHEMATICAL BOLD FRAKTUR SMALL O
1D589 ├─ 𝖉 ├─ MATHEMATICAL BOLD FRAKTUR SMALL D
1D58A ├─ 𝖊 ├─ MATHEMATICAL BOLD FRAKTUR SMALL E
0020 ├─ ] [ ├─ SPACE
1D56E ├─ 𝕮 ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL C
1D58D ├─ 𝖍 ├─ MATHEMATICAL BOLD FRAKTUR SMALL H
1D586 ├─ 𝖆 ├─ MATHEMATICAL BOLD FRAKTUR SMALL A
1D597 ├─ 𝖗 ├─ MATHEMATICAL BOLD FRAKTUR SMALL R
1D586 ├─ 𝖆 ├─ MATHEMATICAL BOLD FRAKTUR SMALL A
1D588 ├─ 𝖈 ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
1D599 ├─ 𝖙 ├─ MATHEMATICAL BOLD FRAKTUR SMALL T
1D58A ├─ 𝖊 ├─ MATHEMATICAL BOLD FRAKTUR SMALL E
1D597 ├─ 𝖗 ├─ MATHEMATICAL BOLD FRAKTUR SMALL R
1D598 ├─ 𝖘 ├─ MATHEMATICAL BOLD FRAKTUR SMALL S
在引擎蓋下它使用unicode-name和unicode-sequence_name ,也可以直接使用。
根據ovhaag 的建議使用Unicode Utils gem ,我提出了以下適用於我的解決方案:
require 'unicode_utils'
string = %Q|Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!|
mapping = string.chars.collect {|c| UnicodeUtils.char_name(c).downcase}
name_to_byte = UnicodeUtils::NAME_MAP.invert
bytes = mapping.collect {|c| name_to_byte[c.upcase]}
new_string = bytes.pack('U*')
string==new_string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.