Поиск латинских букв в кириллическом тексте

Turbina

Client
Регистрация
28.09.2015
Сообщения
67
Благодарностей
11
Баллы
8
Задача найти латинские буквы кириллическом тексте.
Пример:
1) сон - кириллица
2) coн - здесь две первые буквы латиница.
Как отличить такие слова?
По логике нужно проверить каждую букву на наличие соседней с другой раскладкой.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Кубик "Обработка текста > Regex"
Регулярка: [A-Za-z]
Затем If'ом проверяешь переменную на пустоту и если переменная не пустая, значит присутствуют латинские буквы.
 
  • Спасибо
Реакции: GreenWay и Turbina

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Или так же, но для латиницы:
C#:
string str = project.Variables["text"].Value;
if (Regex.Match(str, "[A-Za-z]").Success) // если присутствуют латинские символы
    throw new Exception("Присутствуют латинские символы"); // выход по красной
// если нет, выход по зеленой
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
734
Благодарностей
249
Баллы
43
Может кто то подскажет решение по поиску и моментальной замене букв с латиницы на кириллицу ну или наоборот(будет универсальный вариант).
Предположим есть "текст" = ПетрOB. Там он распознался, но последние буквы это латиница, а хотелось бы получить, нормальный вариант текста. Все буквы в латинице.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
794
Благодарностей
814
Баллы
93
Может кто то подскажет решение по поиску и моментальной замене букв с латиницы на кириллицу ну или наоборот(будет универсальный вариант).
Предположим есть "текст" = ПетрOB. Там он распознался, но последние буквы это латиница, а хотелось бы получить, нормальный вариант текста. Все буквы в латинице.
вот накидал:
C#:
//Словарь символов: англ - рус (добавь свои)
Dictionary<char,char> slovar = new Dictionary<char,char>();
slovar.Add('O', 'О');
slovar.Add('B', 'В');

//в переменной slovo наше слово для обработки
string str = project.Variables["slovo"].Value;
char[] mass = new char[str.Length];

for(int i=0;i<str.Length;i++)
{
    if (Regex.Match(str[i].ToString(), "[A-Za-z]").Success)
    {
        try
        {
            char symv = slovar[str[i]];
            mass[i] = symv;
        }
        catch{}
    }
    else
    {
        mass[i] = str[i];
    }
}

string result = project.Variables["slovo"].Value = string.Join("",mass);
return result;
 
  • Спасибо
Реакции: baracuda

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
C#:
//Словарь символов: англ - рус (добавь свои)
Dictionary<char,char> slovar = new Dictionary<char,char>();
slovar.Add('a', 'а');
slovar.Add('A', 'А');

string result = string.Empty;
//убрать латиницу из кириллического текста
foreach(char c in project.Variables["slovo"].Value){
    if(slovar.Keys.Contains(c))
        result += slovar[c];
    else result += c;
}
//или
//убрать кириллицу из латинского текста
foreach(char c in project.Variables["slovo"].Value){
    if(slovar.Keys.Contains(c))
        result += slovar.Where(x=>x.Value.Equals(c)).Key;
    else result += c;
//
return result;
 
  • Спасибо
Реакции: volody00

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
C#:
string input = "слоВО";// тут длинная строка на много слов

string[,] RUtoEN = new string[,]//слева ру справа эн
{                                 
    {"о", "o"},                               
    {"О", "O"},                               
    {"В", "B"}   
};
//тут цикл замены
for(int i = 0; i < RUtoEN.GetLength(0); i++)
{
    input = input.Replace(RUtoEN[i,0], RUtoEN[i,1]);
}

//в лог
if(Regex.IsMatch(input, @"[A-Za-z]"))
{
    project.SendInfoToLog("Чтото заменилось");
}
return input;
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)