检查字符串是波斯语还是英语。

4
我有一个webview,它会从URL中加载一个字符串,我不确定这是否是正确的方法,但我想要做的是检查这个字符串是否是波斯语,如果是,我将更改webview的文本对齐方式为RTL,否则更改为LTR。是否可以确定该字符串是波斯语还是英语?或者是否有其他更好的处理方法?
谢谢提前。
5个回答

12

尝试以下正则表达式,检查阿拉伯语、波斯语和希伯来语字符范围。

public static final Pattern RTL_CHARACTERS = 
    Pattern.compile("[\u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF]");
Matcher matcher = RTL_CHARACTERS.matcher("براي تست");
if(matcher.find()){
   return true;  // it's RTL
} 

1
非常好用,加1分是因为没有使用任何外部库。 - arash moeen

1

试试 波斯工具,这是一个非常棒的JavaScript库,它可以处理很多其他有用的功能。

import { isPersian, toPersianChars } from "persian-tools2";

isPersian("این یک متن فارسی است؟") // true
isPersian("Lorem Ipsum Test") // false

0
在Java中有语言检测库可用于检测语言。我认为这可能会对你有所帮助,试试看。
你需要导入以下库文件才能使用它。
import com.cybozu.labs.langdetect.Detector;
import com.cybozu.labs.langdetect.DetectorFactory;
import com.cybozu.labs.langdetect.Language;

更多参考资料请点击这里


0

如果字符串是两种语言的组合怎么办?例如,大部分是波斯语书写的,但其中有一些英文单词,这种情况经常发生。 - arash moeen
将字符串按空格拆分为数组,其中每个数组元素都是您的句子中的一个单词。然后检查每个数组元素。在此处进行检查:https://dev59.com/N2445IYBdhLWcg3w1tkS - letsjak
它奇怪地将“hello my name is kia gallery, what I do is creating amazing jewelry mostly in gold”检测为匈牙利语,你有什么想法吗? - arash moeen
1
也许可以考虑寻找另一个 API,而不是 textcat。例如 http://www.basistech.com/text-analytics/rosette/language-identifier/ 或 https://code.google.com/p/language-detection/。 - letsjak

0
感谢被接受的答案:
对于包含英文字母、数字、空格以及波斯语、阿拉伯语和希伯来语字符的特定长度,您可以使用以下正则表达式模式:
//MAX_LENGTH = maximum allowable length of string
var pattern = /^[a-zA-Z0-9-\u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF ]{2,MAX_LENGTH}$/;

JavaScript 示例:

function check_En_Numbers_space_Persian_Arabic_Hebrew(str) {
    var pattern = /^[a-zA-Z0-9-\u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF ]{2,100}$/;
    return pattern.test(str.trim());
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接