5 个不稳定版本
0.4.1 | 2022年12月20日 |
---|---|
0.4.0 | 2022年12月13日 |
0.2.0 | 2020年5月18日 |
0.1.1 | 2020年5月15日 |
0.1.0 | 2020年4月24日 |
#932 in 文本处理
26KB
471 行
ccase
是一个命令行工具,用于在字符串大小写之间转换
在蛇形大小写、短横线大小写、驼峰大小写、标题大小写、帕斯卡大小写等之间转换字符串。
用例
$ ls ~/roms
donkey_kong_64.z64
kirby_64_the_crystal_shards.z64
super_mario_64.z64
$ ls ~/roms | cut -d '.' -f 1 | ccase -f snake -t title
Donkey Kong 64
Kirby 64 The Crystal Shards
Super Mario 64
$ ls xmas
'Family Christmas photo-1999.png'
Family_christmas_photo-2000.png
family-christmas-photo-2001.png
FamilyChristmasPhoto2002.png
$ for f in xmas/*; do mv "$f" $(ccase -f snake "$f"); done
$ ls xmas
family_christmas_photo_1999.png
family_christmas_photo_2000.png
family_christmas_photo_2001.png
family_christmas_photo_2002.png
安装
您可以使用 cargo
进行安装
cargo install ccase
您还可以从发布中提供的 Debian 进行安装。
用法
-t, --to<case>
将字符串转换成特定的字符串大小写。
$ ccase -t snake myVarName
my_var_name
$ ccase -t upper my-var-name
MY VAR NAME
$ ccase -t kebab my_var_name
my-var-name
$ ccase -t pascal "my var name"
MyVarName
-f, --from<case>
基于该大小写相关的边界来分割字符串。例如,snake
大小写基于下划线 _
分割,而 camel
基于小写字母后面跟大写字母的字符进行分割 aA
。
$ ccase -f camel -t snake myVar-Name
my_var-name
$ ccase -f snake -t snake myVar-name
myvar-name
$ ccase -f kebab -t snake myVar-name
myvar_name
-b, --boundaries<string>
指定将字符串分割成单词时应使用的精确条件。将使用边界字符串中存在的任何边界。任何例子都可以,但一种好的指定方式是用冒号 :
分隔边界。例如,aA:a1:1a
将基于小写字母后面跟大写字母、小写字母后面跟数字并前面有数字进行分割。
$ ccase -b "aA:a1" -t kebab myVar1
my_var_1
$ ccase -b "_:-: " -t camel my_Var-name
my-var-name
$ ccase -b "aAa" -t snake myVar
my_v_ar
$ ccase -b "AAa" -t snake MYVarName # special acronym boundary
my_var_name
-p, --pattern<pattern>
根据模式转换输入的单词。模式描述了“单词大小写”的顺序。例如,驼峰模式是小写单词后面跟大写单词,就像在驼峰大小写中一样,而小写模式只是小写单词,就像在蛇形大小写中一样。
$ ccase -p camel my-var-name
myVarName
$ ccase -p capital my-var-name
MyVarName
$ ccase -p sentence my-var-name
Myvarname
-d, --delimeter<string>
使用分隔符连接单词。默认情况下,分隔符是一个空字符串,就像在驼峰大小写中使用的那样。
$ ccase -p camel -d _ my-var-name
my_Var_Name
$ ccase -p capital -d . my-var-name
My.Var.Name
$ ccase -p sentence -d __ my-var-name
My__var__name
大小写转换如何工作
“大小写”可以定义为用“分隔符”连接的“模式”。将单词列表转换为大写涉及两个步骤。首先,每个单词都通过模式进行转换。然后,使用分隔符将单词连接在一起。
大小写转换 是将单个字符串分割成单词,然后进行转换并连接。输入通过 边界 来分割。
步骤 1:通过边界分割输入
边界定义了如何分割输入。有三种类型的边界。有基于字符的边界,如连字符 -
、下划线 _
和空格
,它们不属于最终单词列表,但会在字符周围分割输入。还有像小写-大写 (aA
) 或数字-小写 (1a
) 这样的边界,它们在字符之间分割输入,并且匹配的字符包含在结果中。最后还有首字母缩略词边界 (AAa
),它在两个大写字母之间分割(例如 HTTPRequest
)。
在 ccase
中,可以使用 --boundaries
选项指定边界,或者可以使用 --from
定义要转换的 大小写。转换成特定大小写的输入将具有与结果关联的边界。例如,蛇形大小写通过下划线连接,因此只使用下划线作为边界。另一方面,驼峰式大小写中的单词之间有边界,因此使用小写-大写 (aA
) 边界。
步骤 2:使用模式转换单词
模式是一系列 单词大小写,描述单个单词如何转换。例如,小写单词大小写将所有字符转换为小写,大写单词大小写将所有字符转换为大写,而首字母大写单词大小写将第一个字母转换为大写,其余字母转换为小写。例如,蛇形大小写使用一个模式,其中所有单词都应小写化。这是小写模式。驼峰式大小写使用一个模式,其中第一个单词小写化,其余单词大写化。这被称为驼峰模式。
在 ccase
中,可以直接使用 --pattern
指定模式,或者 --to
选项中关联的任何模式都将用于大小写。
步骤 3:使用分隔符连接单词
最后,单词通过指定为分隔符的字符串连接。例如,蛇形、短横线和下划线分别使用字符字符串 _
、-
和空格。分隔符也可以是空字符串,例如在驼峰式中。
在 ccase
中,可以使用 --delimiter
指定分隔符,或者 --to
选项中与大小写关联的分隔符。如果没有提供分隔符,分隔符默认为空字符串。
大小写、模式和边界
大小写列表
大小写 | 示例 |
---|---|
upper | 大写 |
lower | 小写 |
title | 标题 |
toggle | 切换 |
camel | 驼峰 |
pascal | PascalCase |
uppercamel | UpperCamelCase |
snake | snake_case |
uppersnake | UPPER_SNAKE_CASE |
screamingsnake | SCREAMING_SNAKE_CASE |
kebab | kebab-case |
cobol | COBOL-CASE |
upperkebab | UPPER-KEBAB-CASE |
train | Train-Case |
flat | flatcase |
upperflat | UPPERFLATCASE |
alternating | aLtErNaTiNg CaSe |
random | RANDOm cAsE |
pseudorandom | PseUdO rAnDoM cASe |
模式列表
模式 | 定义 |
---|---|
upper | UPPER, UPPER, ... |
lower | lower, lower, ... |
capital | Capital, Capital, ... |
sentence | Capital, lower, lower, ... |
camel | lower, Capital, Capital, ... |
边界列表
类型 | 示例字符串 |
---|---|
连字符 | - |
下划线 | _ |
空格 | |
小写-大写 | Aa |
大写-小写 | aA |
数字-大写 | 1A |
上数字 | A1 |
下数字 | 1a |
下数字 | a1 |
缩写 | AAa |
Rust 库
ccase
是一个基于 Rust 库 convert_case
(GitHub, crates.io) 构建的命令行工具。此库及其文档是此命令行工具中找到的情况、模式、边界和默认行为的来源。
依赖
~3–15MB
~153K SLoC