如何使用Kotlin去除字符串首尾的特殊字符?
在Kotlin中仅删除字符串首尾特殊字符的方法
嘿,这个需求其实很好实现,Kotlin标准库提供了现成的工具,还支持自定义规则,完全不会改动字符串中间的内容。我分几种常见场景给你拆解:
1. 移除首尾的所有空白/控制字符
如果你的"特殊字符"指的是空格、换行\n、回车\r、制表符\t这类标准空白或控制字符,直接用Kotlin内置的trim()方法就搞定了。它只会清理字符串首尾的这类字符,中间的内容(比如你例子里换行分隔的exam和ple.com)会原封不动保留。
示例代码:
// 模拟你给出的原始字符串(开头制表符,中间换行,结尾回车、点、空格) val originalStr = "\thttp://exam\nple.com/\n\r. " val trimmedStr = originalStr.trim() println(trimmedStr) // 输出结果:http://exam // ple.com/ // .
可以看到,开头的制表符和结尾的空格被去掉了,但中间的换行、还有结尾的.(非空白字符)被保留了。
2. 移除自定义的特殊字符集合
如果需要清理的特殊字符还包括其他符号(比如你例子里的末尾.),可以用trim()的重载方法trim(*chars: CharArray),传入你想移除的所有字符组成的数组。
比如我们要移除首尾的空白、制表符、换行、回车和.:
val originalStr = "\thttp://exam\nple.com/\n\r. " // 定义需要清理的首尾字符集合 val charsToTrim = charArrayOf(' ', '\t', '\n', '\r', '.') val trimmedStr = originalStr.trim(*charsToTrim) println(trimmedStr) // 输出结果:http://exam // ple.com/
这样首尾所有指定的特殊字符都被清理了,中间的换行和内容完全没动。
3. 更灵活的正则表达式方案
如果需要更复杂的匹配规则(比如移除首尾所有非字母、数字和://这类特定符号的字符),可以用正则表达式的替换功能,精准匹配首尾的目标字符并替换为空。
示例:
val originalStr = "\thttp://exam\nple.com/\n\r. " // 正则规则:匹配开头或结尾的空白、控制字符、. val trimmedStr = originalStr.replace(Regex("^[\\s\\r\\n\\t.]+|[\\s\\r\\n\\t.]+$"), "") println(trimmedStr) // 输出和上面的自定义字符方案一致:http://exam // ple.com/
这个方案适合规则复杂的场景,你可以根据自己的需求调整正则表达式的匹配范围。
内容的提问来源于stack exchange,提问作者Дмитрий Позолота
相关产品推荐
相关产品推荐

