如何用grep保留外文字符并将该逻辑转为Kotlin实现?
解决方案
Shell(Grep)实现
要仅提取文件中的印地语字符(移除英文、数字、标点等其他字符),在你现有的grep命令基础上添加-o参数即可,该参数会让grep只输出匹配到的内容,而非整行:
grep -o "$(printf '[\u0900-\u097F]')" tb.txt
如果希望将所有提取到的印地语字符合并为连续文本(而非每行一个匹配片段),可搭配tr命令去除换行:
grep -o "$(printf '[\u0900-\u097F]')" tb.txt | tr -d '\n'
Kotlin实现
以下提供两种Kotlin实现方式,分别对应不同的输出需求:
方式一:提取所有印地语字符并合并
import java.io.File fun main() { val filePath = "tb.txt" val hindiCharRegex = Regex("[\\u0900-\\u097F]+") val fileContent = File(filePath).readText() val extractedHindi = hindiCharRegex.findAll(fileContent) .map { it.value } .joinToString(" ") // 用空格分隔匹配片段,可改为""直接拼接 println(extractedHindi) }
方式二:按行处理,保留原文件换行结构
import java.io.File fun main() { val filePath = "tb.txt" val hindiCharRegex = Regex("[\\u0900-\\u097F]+") File(filePath).forEachLine { line -> val lineHindi = hindiCharRegex.findAll(line) .map { it.value } .joinToString(" ") println(lineHindi) } }
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

