.package(url: "https://github.com/mesqueeb/CaseAnything", from: "0.1.5")
14 种 case 转换函数:camelCase、kebab-case、PascalCase 等等...
简单集成,nano 包大小。(体积小巧!)
我创建这个包的原因是其他 case 转换包没有涵盖我这个包所包含的 14 种可能性。
我关注的一些特性 |
CaseAnything 被用于... |
import CaseAnything
CaseAnything 根据您传递的字符串是否包含空格有不同的行为。
名称 | 输入示例 | 输出示例 |
---|---|---|
🐪 camelCase | camelCase("$catDog") |
catDog |
🐫 PascalCase UpperCamelCase |
pascalCase("$catDog") upperCamelCase("$catDog") |
CatDog |
🥙 kebab-case | kebabCase("$catDog") |
cat-dog |
🐍 snake_case | snakeCase("$catDog") |
cat_dog |
📣 CONSTANT_CASE | constantCase("$catDog") |
CAT_DOG |
🚂 Train-Case | trainCase("$catDog") |
Cat-Dog |
🕊 Ada_Case | adaCase("$catDog") |
Cat_Dog |
👔 COBOL-CASE | cobolCase("$catDog") |
CAT-DOG |
📍 Dot.notation | dotNotation("$catDog") |
cat.Dog |
📂 Path/case | pathCase("$catDog") |
$cat/Dog |
🛰 Space case | spaceCase("$catDog") |
$cat Dog |
🏛 Capital Case | capitalCase("$catDog") |
$Cat Dog |
🔡 lower case | lowerCase("$catDog") |
$cat dog |
🔠 UPPER CASE | upperCase("$catDog") |
$CAT DOG |
您可以看到,大多数函数默认删除特殊字符,而一些函数保留特殊字符。
删除 特殊字符的函数* | 保留 特殊字符的函数* |
---|---|
|
|
*您可以控制是否保留或删除特殊字符,如下所示
// default:
camelCase("$catDog") == "catDog"
// force keeping special characters:
camelCase("$catDog", keepSpecialCharacters: true) == "$catDog"
// default:
pathCase("$catDog") == "$cat/Dog"
// force removing special characters:
pathCase("$catDog", keepSpecialCharacters: false) == "cat/Dog"
这些 case 不改变 单词的大小写
// default:
dotNotation("$catDog") == "cat.Dog"
// force lower case:
dotNotation("$catDog").toLowerCase() == "cat.dog"
只要目标字符串中存在空格,它就会将输入视为句子,并且仅在空格处分割每个部分。
名称 | 输入示例 | 输出示例 |
---|---|---|
🐪 camelCase | camelCase("I'm O.K.!") |
imOk |
🐫 PascalCase UpperCamelCase |
pascalCase("I'm O.K.!") upperCamelCase("I'm O.K.!") |
ImOk |
🥙 kebab-case | kebabCase("I'm O.K.!") |
im-ok |
🐍 snake_case | snakeCase("I'm O.K.!") |
im_ok |
📣 CONSTANT_CASE | constantCase("I'm O.K.!") |
IM_OK |
🚂 Train-Case | trainCase("I'm O.K.!") |
Im-Ok |
🕊 Ada_Case | adaCase("I'm O.K.!") |
Im_Ok |
👔 COBOL-CASE | cobolCase("I'm O.K.!") |
IM-OK |
📍 Dot.notation | dotNotation("I'm O.K.!") |
Im.OK |
📂 Path/case | pathCase("I'm O.K.!") |
I'm/O.K.! |
🛰 Space case | spaceCase("I'm O.K.!") |
I'm O.K.! |
🏛 Capital Case | capitalCase("I'm O.K.!") |
I'm O.k.! |
🔡 lower case | lowerCase("I'm O.K.!") |
i'm o.k.! |
🔠 UPPER CASE | upperCase("I'm O.K.!") |
I'M O.K.! |
另请注意,多个连续空格被视为一个空格。
您可以选择保留一些特殊字符,而不是删除所有特殊字符。
在下面的示例中,我们看到
$cat-dog
$CatDog
pascalCase("$cat-dog", keepSpecialCharacters: false)
// CatDog → not what we want
pascalCase("$cat-dog", keepSpecialCharacters: true)
// $Cat-Dog → not what we want
pascalCase("$cat-dog", keep: ["$"])
// $CatDog → desired output
我用最常见的 Latin-1 Supplement 特殊字符扩展了常规字母表。
这个库最酷的地方在于,对于用作变量名的 case,它会将特殊字符“转换”为常规字母!😎
// CONVERTS special characters:
camelCase("Çâfé Ågård") == "cafeAgard"
pascalCase("Çâfé Ågård") == "CafeAgard"
kebabCase("Çâfé Ågård") == "cafe-agard"
snakeCase("Çâfé Ågård") == "cafe_agard"
constantCase("Çâfé Ågård") == "CAFE_AGARD"
trainCase("Çâfé Ågård") == "Cafe-Agard"
adaCase("Çâfé Ågård") == "Cafe_Agard"
cobolCase("Çâfé Ågård") == "CAFE-AGARD"
dotNotation("Çâfé Ågård") == "Cafe.Agard"
// DOES NOT convert special characters:
spaceCase("Çâfé Ågård") == "Çâfé Ågård"
pathCase("Çâfé Ågård") == "Çâfé/Ågård"
lowerCase("Çâfé Ågård") == "çâfé ågård"
upperCase("Çâfé Ågård") == "ÇÂFÉ ÅGÅRD"
capitalCase("Çâfé Ågård") == "Çâfé Ågård"
我确保在悬停时提供出色的文档!
使用 Better Touch Tool,您可以设置键盘快捷键以使用 JavaScript 转换选定的文本。这个 repo 提供了一个易于安装的预设,其中包含 pascal、kebab 和 camel case 的快捷键!(感谢 @AndrewKoch)它甚至支持 VSCode 中的多光标!
这是一个示例,演示如何触发键盘快捷键将选定的文本转换为 PascalCase;kebab-case;camelCase
您可以从源代码下载 BTT 预设:CaseAnything.bttpreset。
我的包保持小巧的原因在于,它实际上只是使用正则表达式来分隔“单词”。
// the source code is similar to:
public func splitOnSpecialChars(string: String) -> [String] {
let splitRegex = try! NSRegularExpression(pattern: "^[a-z]+|[A-Z][a-z]+|[a-z]+|[0-9]+|[A-Z]+(?![a-z])")
return splitRegex.matches(in: string, range: NSRange(string.startIndex..., in: string))
}
实际使用的正则表达式稍微全面一些,可以在这里找到。