Kotlin 驼峰 空格 下划线 互相转换
案例如下:
convert this to camel case ->
ConvertThisToCamelCase ->
convert_this_to_camel_case
代码如下:
package com.android.learn01
import java.util.*
fun main() {
println("convert_this_to_camel_case".underlineToCamelCase())
println("convert_this_to_camel_case".underlineToCamelCase().cameToUnderlineCase())
println("========================================")
println("convert this to camel case".spaceToUnderlineCase())
println("convert_this_to_camel_case".underlineToSpaceCase())
println("========================================")
println("convert this to camel case".spaceToCamelCase())
println("convert this to camel case".spaceToCamelCase().cameToSpaceCase())
}
// 空格转驼峰
fun String.spaceToCamelCase(): String {
val str = this.trim()
if (str.isEmpty()) return ""
return str.split("\\s+".toRegex())
.joinToString("") { if (it[0] in 'a'..'z') it[0] - 32 + it.substring(1) else it }
}
// 驼峰转空格
fun String.cameToSpaceCase(): String {
val str = this.trim()
if (str.isEmpty()) return ""
val list = mutableListOf<String>()
var i = 1
var j = 0
while (i < str.length) {
if (str[i] in 'A'..'Z') {
list.add(str.substring(j, i))
j = i
}
i ++
}
list.add(str.substring(j))
return list.joinToString(" ") { it.lowercase(Locale.getDefault()) }
}
// 下划线转驼峰
fun String.underlineToCamelCase(): String {
val str = this.trim()
if (str.isEmpty()) return ""
return str.split("_")
.joinToString("") { if (it[0] in 'a'..'z') it[0] - 32 + it.substring(1) else it }
}
// 驼峰转下划线
fun String.cameToUnderlineCase(): String {
val str = this.trim()
if (str.isEmpty()) return ""
val list = mutableListOf<String>()
var i = 1
var j = 0
while (i < str.length) {
if (str[i] in 'A'..'Z') {
list.add(str.substring(j, i))
j = i
}
i ++
}
list.add(str.substring(j))
return list.joinToString("_") { it.lowercase(Locale.getDefault()) }
}
// 空格转下划线 使用跳板
fun String.spaceToUnderlineCase(): String {
return this.spaceToCamelCase().cameToUnderlineCase()
}
// 下划线转空格 使用跳板
fun String.underlineToSpaceCase(): String {
return this.underlineToCamelCase().cameToSpaceCase()
}
如果各位大佬有比我更好的方法还请分享一下,万分感谢!!!
本文展示了在Kotlin中将字符串从下划线分隔转换为驼峰式命名,以及从驼峰式转换为下划线分隔的方法。提供的代码示例包括空格与驼峰/下划线间的转换,并通过跳板函数简化了这两种转换。
1310





