StringExt API - lifedever/kt-speedy-toolbox GitHub Wiki
字符串扩展提供了丰富的字符串处理功能,包括验证、格式化、转换、加密等。
检查字符串是否不为空且不为空白。
fun String?.isPresent(): Boolean
示例:
val text1 = "Hello"
val text2 = ""
val text3: String? = null
println(text1.isPresent()) // true
println(text2.isPresent()) // false
println(text3.isPresent()) // false
检查字符串是否为空或空白。
fun String?.isNotPresent(): Boolean
示例:
val text = ""
if (text.isNotPresent()) {
println("字符串为空")
}
如果字符串为空白则返回 null,否则返回原字符串。
fun String?.nullIfBlank(): String?
示例:
val text1 = " "
val text2 = "Hello"
println(text1.nullIfBlank()) // null
println(text2.nullIfBlank()) // "Hello"
将字符串路径转换为 File 对象。
fun String.toFile(): File
示例:
val filePath = "/path/to/file.txt"
val file = filePath.toFile()
将字符串转换为日期对象。
fun String.toDate(pattern: String): Date
fun String.toDate(): Date // 自动识别格式
fun String.toDateTime(pattern: String = "yyyy-MM-dd"): DateTime
示例:
val dateStr = "2024-01-15"
val date1 = dateStr.toDate("yyyy-MM-dd")
val date2 = dateStr.toDate() // 自动识别
val dateTime = dateStr.toDateTime()
安全地转换日期,失败时返回 null。
fun String.toDateOrNull(): Date?
示例:
val invalidDate = "invalid-date"
val date = invalidDate.toDateOrNull() // null
截取指定最大长度的字符串。
fun String.substringMax(count: Int): String
示例:
val text = "Hello World"
println(text.substringMax(5)) // "Hello"
首字母大小写转换。
fun String.lowerFirstChat(): String
fun String.upperFirstChat(): String
示例:
val text = "Hello"
println(text.lowerFirstChat()) // "hello"
println(text.upperFirstChat()) // "Hello"
强制去除所有空白字符(包括空格、制表符、换行符等)。
fun String.trimForce(): String
示例:
val text = "Hello\n\t World\r"
println(text.trimForce()) // "HelloWorld"
计算字符串的 MD5 或 SHA1 哈希值。
fun String.md5(): String
fun String.sha1(): String
示例:
val text = "Hello World"
println(text.md5()) // "b10a8db164e0754105b7a99be72e3fe5"
println(text.sha1()) // "0a4d55a8d778e5022fab701977c5d840bbc486d0"
安全地拼接路径。
fun String.pathAppend(path: String): String
示例:
val basePath = "/api/v1/"
val endpoint = "/users/"
val fullPath = basePath.pathAppend(endpoint) // "/api/v1/users"
获取文件扩展名。
fun String.getFileType(): String
示例:
val filename = "document.pdf"
println(filename.getFileType()) // "pdf"
转换为 SQL LIKE 查询格式。
fun String.toLikeQuery(): String
fun String.toLeftLikeQuery(): String
fun String.toRightLikeQuery(): String
示例:
val keyword = "kotlin"
println(keyword.toLikeQuery()) // "%kotlin%"
println(keyword.toLeftLikeQuery()) // "%kotlin"
println(keyword.toRightLikeQuery()) // "kotlin%"
检查是否为图片文件。
fun String.isImage(): Boolean
示例:
val filename1 = "photo.jpg"
val filename2 = "document.pdf"
println(filename1.isImage()) // true
println(filename2.isImage()) // false
检查是否为音频文件。
fun String.isAudioFile(): Boolean
示例:
val filename = "song.mp3"
println(filename.isAudioFile()) // true
清除 HTML 标签。
fun String.clearHtmlTag(): String
示例:
val html = "<p>Hello <b>World</b></p>"
println(html.clearHtmlTag()) // "Hello World"
还原 HTML 转义字符。
fun String.htmlUnescape(): String
示例:
val escaped = "<div>Hello</div>"
println(escaped.htmlUnescape()) // "<div>Hello</div>"
转义 MongoDB 查询特殊字符。
fun String.escapeSpecialWordForMongoQuery(): String
示例:
val query = "user.name"
println(query.escapeSpecialWordForMongoQuery()) // "user\\.name"
查找两个字符串之间的内容。
fun String.findBetween(start: String, end: String, includeEnd: Boolean = true): String?
示例:
val text = "Hello [World] Test"
val result = text.findBetween("[", "]", false) // "World"
检查是否包含任意指定字符串。
fun String.containsAnyOf(vararg keywords: String, ignoreCase: Boolean = false): Boolean
示例:
val text = "Hello World"
val hasKeyword = text.containsAnyOf("Hello", "Hi") // true
批量替换多个字符串。
fun String.replaceBatch(oldValues: List<String>, newValue: String): String
示例:
val text = "Hello World Test"
val result = text.replaceBatch(listOf("Hello", "World"), "Hi") // "Hi Hi Test"
按实际字符集大小分割字符串。
fun String.chunkedRealSizeByCharset(size: Int, charset: Charset = Charsets.UTF_8): List<String>
示例:
val text = "这是一个测试文本"
val chunks = text.chunkedRealSizeByCharset(10)
当字符串不为空时执行操作。
inline fun String?.ifPresent(doIfPresent: (String) -> Unit)
inline fun String?.ifPresent(doIfPresent: (String) -> Unit, doIfNotPresent: () -> Unit)
示例:
val text: String? = "Hello"
text.ifPresent(
doIfPresent = { println("文本内容: $it") },
doIfNotPresent = { println("文本为空") }
)
当字符串为空时返回默认值。
fun String?.ifPresentOrElse(other: String): String
示例:
val text: String? = null
val result = text.ifPresentOrElse("默认值") // "默认值"
- 大部分扩展函数都是空安全的,可以在可空字符串上调用
- 日期转换函数支持多种常见格式的自动识别
- 加密函数返回的是十六进制字符串
- 路径拼接会自动处理斜杠,避免重复或缺失