6 个版本

0.1.7 2023年9月29日
0.1.6 2023年7月6日
0.1.5 2023年6月29日
0.1.4 2023年5月21日
0.1.0 2023年4月10日

#784文本处理

每月 39 次下载

AGPL-3.0

140KB
3.5K SLoC

jp_utils

Rust crate 提供了一些处理日语文本的便捷工具

使用方法

jp_utils = "0.1.4"

示例

use jp_utils::furi::{segment::SegmentRef, Furigana}; // Feature: "furigana"
use jp_utils::hiragana::Syllable; // Feature: "hiragana"
use jp_utils::JapaneseExt;
use jp_utils::{alphabet::Alphabet, counter::is_counter};

// Basic string functions on japanese alphabet using the `jp_utils::JapaneseExt` trait
assert!("".is_kana());
assert!("".is_hiragana());
assert!("日本語".is_kanji());
assert!("日ほん語".has_kanji());
assert!("日本語".is_japanese());
assert!("例です".starts_with_alphabet(Alphabet::Kanji));
assert!("".is_small_kana());
assert!(!"".is_small_kana());
assert!("".is_symbol());
assert_eq!("".to_halfwidth(), "1");

// Hiragana hacks (requires feature: "hiragana")
assert_eq!(
    Syllable::from_char('').to_dakuten(),
    Syllable::from_char('')
);

// Furigana parsing (requires feature "furigana"!)
let furigana = Furigana("[日本|に|ほん]が[好|す]きです");
assert_eq!(furigana.kanji_str(), "日本が好きです");
assert_eq!(furigana.kana_str(), "にほんがすきです");

let mut iter = furigana.segments(); // and even iterate over each part
assert_eq!(
    iter.next(),
    Some(SegmentRef::new_kanji("日本", &["", "ほん"]))
);
assert_eq!(iter.next(), Some(SegmentRef::new_kana("")));
assert_eq!(iter.next(), Some(SegmentRef::new_kanji("",&[""])));
assert_eq!(iter.next(), Some(SegmentRef::new_kana("きです")));
assert_eq!(iter.next(), None);

// Counter
assert!(is_counter(""));
assert!(!is_counter(""));

依赖项

~190–530KB
~16K SLoC