Есть ли способ определить строку на английском или арабском?Как определить строку на английском или арабском?
ответ
Вот простая логика, я просто попытался:
public static boolean isProbablyArabic(String s) {
for (int i = 0; i < s.length();) {
int c = s.codePointAt(i);
if (c >= 0x0600 && c <= 0x06E0)
return true;
i += Character.charCount(c);
}
return false;
}
Он объявляет текст как арабские, если и только если арабская точку Юникода кода встречаются в тексте. Вы можете улучшить эту логику, чтобы быть более подходящей для ваших нужд.
Диапазон 0600 - 06E0 это диапазон кода точки арабских букв и символов (см Unicode tables)
Вы также можете проверить все остальные арабские диапазоны - см. Ссылку в моем ответе. – paxdiablo
Этот метод очень неэффективен для больших строк, поскольку он вычисляет длину строки на каждой итерации. Character.codePointCount (s, 0, s.length()) должен быть сначала назначен переменной, чтобы она не вызывала эту функцию на каждой итерации. – Jazib
@jazib: Хороший момент, спасибо. Я исправил код соответствующим образом. –
Вы можете использовать категоризацию текста на основе N- (Google для этой фразы), но это не отказоустойчивый метод, и для этого может потребоваться не слишком короткая строка.
Вы также можете решить, что строка с буквами ASCII не является арабским.
Он также нуждается в большом количестве данных для обучения (не говоря уже о времени обучения). – brimborium
Обычно вы можете указывать кодовые точки внутри самой строки. Арабский занимает certain blocks в кодовом пространстве Юникода.
Это довольно безопасная ставка, что, если значительная часть символов существует в этих блоках (например, بلدي الحوامات مليء الثعابينة
), это арабский текст.
Вы должны предоставить очень короткую Java-демонстрацию своей идеи. В противном случае, я думаю, что это лучший способ пойти в этом случае (английский против арабского). – brimborium
Попробуйте:
internal static bool ContainsArabicLetters(string text)
{
foreach (char character in text.ToCharArray())
{
if (character >= 0x600 && character <= 0x6ff)
return true;
if (character >= 0x750 && character <= 0x77f)
return true;
if (character >= 0xfb50 && character <= 0xfc3f)
return true;
if (character >= 0xfe70 && character <= 0xfefc)
return true;
}
return false;
}
Незначительные изменения, чтобы охватить все арабские символы и символы в диапазоне
private boolean isArabic(String text){
String textWithoutSpace = text.trim().replaceAll(" ",""); //to ignore whitepace
for (int i = 0; i < textWithoutSpace.length();) {
int c = textWithoutSpace.codePointAt(i);
//range of arabic chars/symbols is from 0x0600 to 0x06ff
//the arabic letter 'لا' is special case having the range from 0xFE70 to 0xFEFF
if (c >= 0x0600 && c <=0x06FF || (c >= 0xFE70 && c<=0xFEFF))
i += Character.charCount(c);
else
return false;
}
return true;
}
Java сама по себе поддерживает различные проверки языка по юникоду, поддерживается арабский язык. Гораздо проще и наименьший способ сделать то же самое - UnicodeBlock
public static boolean isTextContainsHindi(String text) {
for (char charac : text.toCharArray()) {
if (Character.UnicodeBlock.of(charac) == Character.UnicodeBlock.Ar) {
return true;
}
}
return false;
}
Ваш код не подлежит компиляции в моем случае, если я не заменю Character.UnicodeBlock.Ar с Character.UnicodeBlock.ARABIC, также любезно обратите внимание, что имя вашего метода неверно. IsTextContainsHindi должно быть isTextContainsArabic @Guarav Tyagi –
- 1. Как определить, введен ли пользовательский ввод на английском или арабском?
- 2. Перевести текст на английском арабском
- 3. Как отделить текст на арабском и английском в строковом значении?
- 4. Проверка поля ввода на английском и арабском языках
- 5. Как определить слово на английском или любом другом языке
- 6. Определить, есть ли строка на английском языке
- 7. Как разработать многоязычный веб-сайт Wordpress на английском и арабском языках?
- 8. Создайте веб-сайт на арабском языке
- 9. Как узнать текст на арабском языке или на урду
- 10. приложение не указано в магазине игр на арабском языке, но работает на английском языке
- 11. Preg Match для писем на арабском языке и номера на английском языке
- 12. Jquery XDSoft DateTimePicker выпуск на арабском языке
- 13. применять стиль только на арабском тексте
- 14. Как определить, существует ли слово на английском языке, используя nltk
- 15. CultureInfo.InvariantCulture на простом английском
- 16. Локализация на арабском языке iOS Swift
- 17. Проверка на английском и/или финском языке
- 18. Подсчитайте количество символов на арабском и английском языках в строке в JavaScript
- 19. Как найти данные на английском языке или на китайском языке
- 20. Как изменить сообщения об ошибках на арабском языке?
- 21. PHP - Как определить числовое последовательное значение символа в английском алфавите?
- 22. Поддерживается ли на арабском языке все аннотации в Стэнфордском НЛП?
- 23. Дата рисунка в арабском
- 24. Как определить файл или регулярную строку? AS3
- 25. Возможно определить параметр как строку ИЛИ массив?
- 26. Как определить строку подсказки слов на клавиатуре или нет?
- 27. C шрифт операции файла в арабском
- 28. IOS Pushnotification на арабском языке
- 29. Определить строку целую или двойную или обычную строку
- 30. Как отключить локализацию Google ReCaptcha или заблокировать на английском
С точки зрения сегодняшнего мира, «1234» - это как я? –
@Nishant, на арабском языке используются обычные номера или Руми? – paxdiablo
Вы имеете в виду, содержит ли он английский или арабский текст или кодируется ли он таким образом? Второй случай должен быть довольно простым, так как символы не находятся в одном диапазоне Unicode (см. Http://en.wikipedia.org/wiki/Arabic_alphabet). – Martin