#日语 #Unicode #假名 #半角 #全角

g2-unicode-jp

一个将日本半角假名[半角カナ]和全角英数[全角英数]转换为正常形式的库

2 个版本

0.4.1 2024 年 3 月 11 日
0.4.0 2024 年 3 月 11 日

#797 in 文本处理


minidisc 中使用

MIT 许可证

24KB
318

临时库


此库存在是因为 https://github.com/gemmarx/unicode-jp-rs 已经不再活跃,并且需要更新。请与我联系,如果需要,我将从crates.io撤销我的版本。

Unicode-JP (Rust)

Build Status crates.io MIT licensed

包括日本文本中的麻烦字符的转换器。

  • 半角假名[半角カナ;HANKAKU KANA] -> 正常片假名
  • 全角英数[全角英数;ZENKAKU EISU] <-> 正常ASCII

如果您需要包含日语的文本规范化,请首先考虑使用 unicode_normalization 库。可以使用 NFD、NFKD、NFC 和 NFKC。但是,如果您的需求是在受限制的字符终端中对日语字符进行精细控制等细分领域,则此库与您配合使用。

日语有两种音节体系:平假名和片假名,半角假名是它们的另一种表示法。在这些体系中,有两个可组合的变音符号:浊音符号和半浊音符号。Unicode为每个符号提供了三个独立的码点。除此之外,我们在日本文本中经常使用特殊的样式拉丁字母和阿拉伯数字,称为全角英数。这个小工具将这些代码相互转换。

API参考

示例

Cargo.toml

[dependencies]
unicode-jp = "0.4.0"

src/main.rs

extern crate kana;
use kana::*;

fn main() {
    let s1 = "マツオ バショウ ア゚";
    assert_eq!("マツオ バショウ ア ゚", half2kana(s1));
    assert_eq!("マツオ バショウ ア゚", half2full(s1));

    let s2 = "ひ゜ひ゛んは゛";
    assert_eq!("ぴびんば", combine(s2));
    assert_eq!("ひ ゚ひ ゙んは ゙", vsmark2combi(s2));

    let s3 = "#&Rust-1.6!";
    assert_eq!("#&Rust-1.6!", wide2ascii(s3));
}

kana 库的功能

  • wide2ascii(&str) -> String
    将全角英数转换为正常ASCII [A -> A]

  • ascii2wide(&str) -> String
    将正常ASCII字符转换为全角英数 [A -> A]

  • half2full(&str) -> String
    将半角假名转换为带有分离变音符号的正常片假名 [ア゙パ -> ア゙パ]
    此方法简单,但在渲染时可能会引起问题。在这种情况下,请使用 half2kana() 或执行 vsmark2{full|half|combi} 作为后处理。

  • half2kana(&str) -> String
    将半角假名转换为带有组合变音符号的正常片假名 [ア゙パ -> ア゙パ]

  • combine(&str) -> String
    combine(&str) -> String

  • hira2kata(&str) -> String
    将平假名转换为片假名 [あ -> ア]

  • kata2hira(&str) -> String
    将片假名转换为平假名 [ア -> あ]

  • vsmark2full(&str) -> String
    将所有分离的浊音符号转换为全角样式 "\u{309B}"

  • vsmark2half(&str) -> String
    将所有分离的浊音符号转换为半角样式 "\u{FF9E}"

  • vsmark2combi(&str) -> String
    将所有分开的音标转换为空格+组合样式 "\u{20}\u{3099}"

  • nowidespace(&str) -> String
    将全角空格转换为普通空格 [" " -> " "]

  • space2wide(&str) -> String
    将普通空格转换为全角空格 [" " -> " "]

  • nowideyen(&str) -> String
    将全角日元转换为半角日元 ["¥" -> "¥"]

  • yen2wide(&str) -> String
    将半角日元转换为全角日元 ["¥" -> "¥"]

待办或无需待办

  • 音标 -> 无空格组合样式 "\u{3099}"
  • 半角假名 <- 普通片假名
  • (普通/全角)波浪线 <-> 波浪线

依赖

~2.2–3MB
~53K SLoC