You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:44:58