#片假名 #平假名 #全角 #半角

kanaria

此库提供平假名、片假名、半角和全角的相互转换和区分功能

3 个不稳定版本

使用旧的 Rust 2015

0.2.0 2020年2月24日
0.1.1 2019年3月24日
0.1.0 2019年3月23日

算法 中排名第 831

Download history 1144/week @ 2024-03-14 1203/week @ 2024-03-21 1033/week @ 2024-03-28 1296/week @ 2024-04-04 1112/week @ 2024-04-11 1147/week @ 2024-04-18 994/week @ 2024-04-25 1137/week @ 2024-05-02 1546/week @ 2024-05-09 1807/week @ 2024-05-16 1546/week @ 2024-05-23 1560/week @ 2024-05-30 1973/week @ 2024-06-06 2125/week @ 2024-06-13 2342/week @ 2024-06-20 2383/week @ 2024-06-27

每月下载量 9,103
8 包(直接使用3个)中使用

MIT 许可证

275KB
3.5K SLoC

卡尼亚拉

此库提供平假名、片假名、半角和全角的相互转换和区分功能。

Gradle CI

描述

提供以下转换处理。

  • 转换处理
    • 平假名 <-> 片假名的转换
    • 半角 <-> 全角的转换(嘎 <-> ガ,浊音符号的合并也执行)
    • 字母的大写 <-> 小写转换

提供以下判定处理。
除了平假名外,每个都有半角、全角和半角/全角无区分的版本。

  • 判定处理
    • 平假名
    • 片假名
    • 数字吗
    • 字母
    • 符号

演示 / 使用

将字符串读入 UCSStr,进行转换设置(本例中转换为片假名,然后进一步转换为半角),
以 String 形式输出的示例。

let source = "吾輩は😺猫である😺";
let expect = "吾輩ハ😺猫デアル😺";

assert_eq!(expect.to_string(), UCSStr::from_str(source).katakana().narrow().to_string());

虽然不能像上面那样使用方法链进行连续转换设置,但
也可以以以下形式进行转换。

use kanaria::converter::{Converter, ConverterFactory};
let target = vec!['', '', '', '', ''];
let mut result = Vec::<char>::with_capacity(target.len());
unsafe {
    // ほかにも、UCSStrと同じようにVec<T>やStringに出力する機能もあります
    let len = ConverterFactory::from_slice(target.as_slice())
        .katakana()
        .write_to_ptr(result.as_mut_ptr());
    result.set_len(len);
};
assert_eq!(result, vec!['', '', '', '', '']);

此示例将半角文字转换为全角文字。
以这种格式进行转换可以写入生指针(*mut u16等)。
如果不进行连续转换且要求速度,则这里更方便。

顺便说一句,还准备了针对其他语言的包装库。
以下是一个 C# 的示例(也可以以同样的方式从 VB.NET 使用)。

var katakana = "吾輩ハ😺猫デアル😺";
var hiragana = "吾輩は😺猫である😺";
Assert.AreEqual(katakana, UcsString.From(hiragana).Katakana().ToString());
Assert.AreEqual(hiragana, UcsString.From(katakana).Hiragana().ToString());

安装

可以从每个语言使用的包管理器或构建工具等中安装。

Rust( https://crates.io/crates/kanaria

[dependencies]
kanaria = "0.1.1"

C#( https://nuget.net.cn/packages/Kanaria.Net/

PM> Install-Package Kanaria.Net -Version 0.1.2

Maven( https://bintray.com/sam-osamu/maven/com.kanaria.kanaria_jvm

<dependency>
  <groupId>com.kanaria</groupId>
  <artifactId>kanaria_jvm</artifactId>
  <version>0.1.0</version>
  <type>pom</type>
</dependency>

Gradle( https://bintray.com/sam-osamu/maven/com.kanaria.kanaria_jvm

compile 'com.kanaria:kanaria_jvm:0.1.0'

API

请参阅以下页面(这是 Rust 的)。
https://docs.rs/kanaria/0.1.1/kanaria/

像 RustDoc 一样,可以通过示例进行说明,但是
为每个语言的包装函数也准备了类似的功能注释。

许可证

MIT

依赖项

~105KB