Как я могу определить многоязычность в строке?

У меня есть строка в c #

Как определить, содержит ли эта строка символы с разных языков?

то есть: человек вводит свое английское имя в текстовое поле, а также также имя на своем местном языке.

Я хочу запретить это.

что-то вроде этого :

«проверить языковую таблицу символов в строке и, если она исходит из разных таблиц юникода - вернуть ОШИБКУ».

но я думаю, что существует проблема с "a" в сша или великобритании.

может я ошибаюсь.

как я могу распознать более одного языка?


person Royi Namir    schedule 24.09.2011    source источник
comment
вы имеете в виду язык, кодировку или информацию о культуре? Какую платформу вы используете? ASP.NET Winforms или Silverlight? Где ваше приложение будет установлено? В чем суть регулярного выражения и тега Unicode?   -  person Caspar Kleijne    schedule 24.09.2011
comment
Не все символы относятся к определенному языку. Вам понадобится более четкое определение вашей проблемы.   -  person Henk Holterman    schedule 24.09.2011
comment
@ Caspar Kleijne, спасибо, что добавил asp.net. это веб-сайт, на котором есть текстовое поле, которое должно содержать только символы одного языка.   -  person Royi Namir    schedule 24.09.2011
comment
@ Хенк Холтерман, что ты посоветуешь? Я хочу разрешить только один язык ...   -  person Royi Namir    schedule 24.09.2011
comment
Это ваша проблема, вам нужно будет ее определить. Вы могли бы получить более точные ответы, приведя больше и гораздо лучших примеров. И когда вы хотите кого-то предупредить, не ставьте пробел после "@".   -  person Henk Holterman    schedule 24.09.2011
comment
@ Хенк Холтерман, я не знал о космической части. и вот пример: abd אבג ...... эта строка содержит символы иврита и английского языка. Я хочу запретить это. это может быть иврит или другой язык. я думаю, что я очень ясно понимаю это :)   -  person Royi Namir    schedule 24.09.2011


Ответы (1)


Я думаю, вы ищете кодовые точки. Уникальные идентификаторы символа в кодовой странице. Думаю, это должно быть вам полезно Как получить массив кодовых точек Unicode из строки .NET?. Как только вы получите массив кодовых точек из строки, вы можете сравнить его с диапазоном кодовых точек, который вам нужен.

Надеюсь это поможет.

person Tigran    schedule 24.09.2011
comment
Я пытался . Я могу понять это - как мне узнать, содержит ли строка более 1 языка? не могли бы вы объяснить? - person Royi Namir; 24.09.2011
comment
Что ж, если вы говорите об обнаружении естественного языка, нет простого решения, вам понадобится словарь языка и попытайтесь понять его более или менее, как это делают современные браузеры. Это комплекс. Что вы можете сделать, так это создать набор чисел, разделенных алфавитами (латинский, арабский, индуистский, русский), и определить наличие разных АФАБЕТОВ, но не ЯЗЫКОВ. Другими словами, если я напишу предложение во Франции, смешанное с итальянским, вы никогда не поймете (если бы я не использовал специфические для языка буквы), но вы можете отложить: латинские языки от нелатинских. - person Tigran; 25.09.2011
comment
, спасибо, как мне отложить латынь против латыни? можешь сослаться на какой-нибудь пример? - person Royi Namir; 25.09.2011
comment
Я думаю, вы можете посмотреть здесь распределение кодов: inamidst.com/stuff/unidata - person Tigran; 25.09.2011