android 删除英文字符并只保留外来unicode字符

6tr1vspr  于 2023-11-15  发布在  Android
关注(0)|答案(2)|浏览(121)

我有一个regex grep命令,它可以像预期的那样工作。它可以将所有的英文字符和标点符号与外国字符分开。

head -300  tb.txt | grep  -h '[A-Za-z0-9[:punct:]]'

字符串
但我不知道如何删除这些字符,只保留在文本文件中的外国字符。
例如,如果我有这个文本:

"@context": "https://schema.org",
  "@type": "WebPage",
  "name": "गृहनिर्माण सोसायटीच्या माजी सचिवांना तीन लाखांचा दंड; उच्च न्यायालयाचा निर्णय, वाचा सविस्तर",
  "description": "<p> नगर सहकारी गृहनिर्माण संस्थेचे माजी सचिव चिंतामण पांडे यांना सहकारी संस्थेच्या डी/ई-प्रभागाच्या उपनिबंधकाने ३ मार्च २०२२ रोजी याचिकाकर्त्याला पाच वर्षांसाठी गृहनिर्माण संस्थेची निवडणूक लढवण्यास पात्र ठरवले. गृहनिर्माण संस्थेचे सचिव म्हणून वार्षिक सर्वसाधारण सभा आयोजित न केल्याबद्दल याचिकाकर्त्याला दोषी ठरवून ठरवून उपरोक्त कारवाई केली होती.</p>
",
  "image":"https://s.navarashtra.com/wp-content/uploads/2020/06/cropped-navarashtra-logo.png",


预期是这样的:

गृहनिर्माण सोसायटीच्या माजी सचिवांना तीन लाखांचा दंड; उच्च न्यायालयाचा निर्णय, वाचा सविस्तर

नगर सहकारी गृहनिर्माण संस्थेचे माजी सचिव चिंतामण पांडे यांना सहकारी संस्थेच्या डी/ई-प्रभागाच्या उपनिबंधकाने ३ मार्च २०२२ रोजी याचिकाकर्त्याला पाच वर्षांसाठी गृहनिर्माण संस्थेची निवडणूक लढवण्यास पात्र ठरवले. गृहनिर्माण संस्थेचे सचिव म्हणून वार्षिक सर्वसाधारण सभा आयोजित न केल्याबद्दल याचिकाकर्त्याला दोषी ठरवून ठरवून उपरोक्त कारवाई केली होती.


更新:
这将突出显示预期的文本。但如何只返回突出显示/选定的文本?

grep "$(printf '[\u0900-\u097F]')" tb.txt


更新2:
我正在寻找一种方法来重写Kotlin中的上述语句。

lf3rwulv

lf3rwulv1#

通过sed删除除点之外的所有asp:

| sed 's,[!--/-~],,g'

字符串
现场:

head -300  tb.txt | grep  -h '[A-Za-z0-9[:punct:]]' | sed 's,[!--/-~],,g'


这个字符类有两个范围:一个是从!(第一个可打印的asshort字符)到-(点之前的字符),另一个是从/(点之后的字符)到~(最后一个asshort字符)。

biswetbf

biswetbf2#

如何在Kotlin中使用这一行?我不想保留点(.句号)
您可以将文件文本放入缓冲读取器,将行读入列表,将其切片为所需的行数,然后应用正则表达式过滤掉ASCII字符。
该正则表达式有两种工作形式:

Regex("[\\p{ASCII}*&&[^. ]]")
Regex("[\\x00-\\x7F&&[^. ]]")

字符串
请注意,句点.和空格``都与[^. ]一起保留
这里是File的扩展函数,它接收你想从文件中应用的行数。

fun File.getForeignUnicode(nlines: Int): String {
    val regex = Regex("[\\p{ASCII}*&&[^. ]]")
    val text = bufferedReader().readLines().let { lines ->
        lines.slice(0..min(lines.count() - 1, nlines - 1)).joinToString(separator = "\n")
    }
    return regex.replace(text, "")
}


使用方法:

// Assuming the file resides in `filesDir` named as "tb.txt"
val file =  File(filesDir, "tb.txt")
val text = file.getForeignUnicode(300)
print(text)

相关问题