3 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2020年2月24日 |
---|---|
0.1.1 | 2019年3月24日 |
0.1.0 | 2019年3月23日 |
在 算法 中排名第 831
每月下载量 9,103
在 8 个 包(直接使用3个)中使用
275KB
3.5K SLoC
卡尼亚拉
此库提供平假名、片假名、半角和全角的相互转换和区分功能。
描述
提供以下转换处理。
- 转换处理
- 平假名 <-> 片假名的转换
- 半角 <-> 全角的转换(嘎 <-> ガ,浊音符号的合并也执行)
- 字母的大写 <-> 小写转换
提供以下判定处理。
除了平假名外,每个都有半角、全角和半角/全角无区分的版本。
- 判定处理
- 平假名
- 片假名
- 数字吗
- 字母
- 符号
演示 / 使用
将字符串读入 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 一样,可以通过示例进行说明,但是
为每个语言的包装函数也准备了类似的功能注释。
许可证
依赖项
~105KB