#snake-case #lower-case #underscore

nightly to_snake_case

一个简单的库,将字符串转换为snake_case

2个版本

0.1.1 2023年2月20日
0.1.0 2023年2月20日

#1309 in Rust模式

Download history 20/week @ 2024-03-11 35/week @ 2024-03-18 18/week @ 2024-03-25 55/week @ 2024-04-01 181/week @ 2024-04-08 89/week @ 2024-04-15 164/week @ 2024-04-22 103/week @ 2024-04-29 23/week @ 2024-05-06 22/week @ 2024-05-13 20/week @ 2024-05-20 46/week @ 2024-05-27 28/week @ 2024-06-03 31/week @ 2024-06-10 13/week @ 2024-06-17 37/week @ 2024-06-24

113 每月下载量

Apache-2.0

7KB

to_snake_case

此crate的主要用途是将camelCase和PascalCase格式转换为snake_case。这对于将traitstruct名称转换为用于生成模块和函数名称非常有用。

在rust中检测到的常见模式包括一些特质,如TryFromTryInto,它们的函数名分别是try_fromtry_into

此crate为所有AsRef<str>实现了ToSnakeCase特质,其中所有单词都转换为snake case。

(在此上下文中)一个单词将考虑为由空格分隔的字母组合。这意味着“ThrowItToMe”被认为是一个单词,但仍可以转换为适当的snake case“throw_it_to_me”。由空格分隔的单词不会用下划线 '_' 连接。

每次调用to_snake_case()都提供包含转换后字符串的新分配字符串。

use to_snake_case::ToSnakeCase;

assert_eq!("to_snake_case", "ToSnakeCase".to_snake_case());
assert_eq!("to_snake_case", "toSnakeCase".to_snake_case());
assert_eq!("the_children_are_wrong - seymour skinner", "theChildrenAreWrong - Seymour Skinner".to_string().to_snake_case());

缩写词

to_snake_case能够检测插入在单词之前、之间或之后的缩写词,并按预期进行转换(假设尾随单词首字母大写)。

use to_snake_case::ToSnakeCase;

assert_eq!("to_snake_case", "TOSnakeCASE".to_snake_case());
assert_eq!("to_snake_case", "ToSNAKECase".to_snake_case());

assert_eq!("canon_d", "CanonD".to_snake_case());

缩写词的限制

在多个缩写词连续在一起的情况下,无法正确地创建snake case。这是因为即使有字典,也无法逻辑上识别下一个单词的起始和结束位置。例如,字母"TOME" - 应将其转换为"tome"还是"to_me"?缩写词也是上下文相关的,并不具有普遍性。

to_snake_case中,所有连续的大写字母将转换为不带下划线的小写,就像一个缩写词/单词一样,除非有前缀使其能够识别单词(例如小写字母)。

use to_snake_case::ToSnakeCase;

assert_eq!("tome", "TOME".to_snake_case());

构建依赖关系

#![feature(let_chains)]

许可证

版权所有 2023 Tony Nguyen

根据Apache License,版本2.0(“许可证”);除非根据适用法律或书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言,请参阅许可证,以了解管理许可和限制的具体语言。

无运行时依赖