val camelCaseString = "thisIsCamelCase"
val snakeCaseString = camelCaseString.map {
if (it.isUpperCase()){
"_${it.toLowerCase()}"
}else
{"$it"}
}
.joinToString(separator = "")
System.out.println("here is your snake string: $snake_case_string")
这是你蛇串:这是 Camel 箱 变蛇为 Camel
val snakeCaseString = "snake_case_string"
val camelCase = StringBuilder()
var prevChar = '$'
snakeCaseString.forEach {
if(prevChar.equals('_')){
camelCase.append(it.toUpperCase())
}else if(!it.equals('_')){
camelCase.append(it)
}
prevChar = it
}
System.out.println(camelCase.toString())
7条答案
按热度按时间35g0bw711#
下面是String类的扩展,它使用正则表达式和替换来将字符串从camel case转换为snake case,以及从snake case转换为camel case:
以下是使用String扩展名的示例:
3vpjnl9f2#
这是我的尝试。
我的方法也是以扩展函数的形式编写的,但它不使用正则表达式,而是逐个字符处理它们,并将处理结果折叠到累加器中,累加器的开头是一个空的
StringBuilder
。处理过程如下:需要注意的是,使用的是
kotlin.text.StringBuilder
,而不是JDK。9avjhtql3#
我会使用这些实现:
...它使用snakes作为分隔符拆分字符串,然后将各部分重新附加为不带分隔符的大写单词。
...它使用正则表达式来找到驼峰之前的位置,插入蛇,然后将整个字符串转换为小写。正则表达式由两部分组成,第一部分
(?<=.)
是一个正向后看,说明它前面必须有一个字符,第二部分(?=\\p{Upper})
是一个正向前看,说明它后面必须有一个大写字符。ui7jx7zq4#
如果你的类路径中有jackson-databind,你可以使用下面的实用函数:
jvlzgdj95#
这是我对Kotlin的尝试
这是你蛇串:这是 Camel 箱
变蛇为 Camel
snakeCaseString
6jygbczu6#
我在这里采用了其中一个答案,添加了标题大小写,并对API做了一些修改
0yycz8jy7#
如果你想要一个有输入和输出的方法,我是这样做的: