Автор Тема: Замена латинских символов на кириллические в строке  (Прочитано 931 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн op_joke [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Здравствуйте,
Что то я уперся в стенку, или что называется - "глаз замылился".

Предыстория: Есть одна американская программа, которая оставляет логи, эти логи я и обрабатываю. На текущем этапе нужно поменять названия месяцев на их порядковые номера. И всё достаточно просто реализуемо - составил массив соответствия названий - номерам, нахожу текст, ищу в массиве, подставляю номер. В результате работы начал получать ошибку, о том что "такое значение в массиве не найдено". А всё это из-за кривой локализации на наш великий и могучий, как оказалось, некоторые символы в словах - латинские.

Вот пример - "декабрь" и "дeкaбpь". Думаете это два одинаковых слова? А вот и нет, во втором слове буквы - "e a p" - буржуйские. При этом, латинской может быть любая из букв, или ни одной.

Проанализировал текст, иногда подтверждая сомнения примером из справки:

Код: AutoIt [Выделить]
$sInput = 'дeкaбpь'
$sOutput = StringRegExpReplace($sInput, "[opakxce]", "-")
MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput)


выявил все схожие буквы:
Код: AutoIt [Выделить]
Dim $aArrEn = ["o", "p", "a", "k", "x", "c", "e"]
Dim $aArrRus = ["о", "р", "а", "к", "х", "с", "е"]


И теперь перепните меня пожалуйста через стеночку - подскажите как эти буквы заменить.
Спасибо.

Русское сообщество AutoIt


Оффлайн op_joke [?]

  • Новичок
  • *
  • Сообщений: 20

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
О, похоже отпустило, нашел решение:

Код: AutoIt [Выделить]
$sResult = _StringReplaceLCh("дeкaбpь")
ConsoleWrite($sResult & @CRLF)

Func _StringReplaceLCh($sString)
 Local $Pattern[7][2] = [["o", "о"], ["p", "р"], ["a", "а"], ["k", "к"], ["x", "х"], ["c", "с"], ["e", "е"]]
 For $i = 0 To UBound($Pattern)-1
  $sString = StringRegExpReplace($sString, $Pattern[$i][0], $Pattern[$i][1])
 Next
 Return $sString
EndFunc

;и проверим на всякий:
$sOutput = StringRegExpReplace($sResult, "[opakxce]", "-")
MsgBox(0, "Результат до и после", $sResult & @LF & $sOutput)
 

« Последнее редактирование: Февраль 01, 2017, 14:29:35 от op_joke »

Русское сообщество AutoIt

Re: Замена латинских символов на кириллические в строке
« Ответ #1 Отправлен: Февраль 01, 2017, 14:22:42 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
4405 Просмотров
Последний ответ Январь 16, 2012, 00:39:41
от CreatoR
5 Ответов
6076 Просмотров
Последний ответ Апрель 06, 2010, 11:56:19
от CreatoR
2 Ответов
4622 Просмотров
Последний ответ Декабрь 22, 2010, 16:31:05
от lexaSF
1 Ответов
4584 Просмотров
Последний ответ Апрель 24, 2011, 13:03:37
от madmasles
4 Ответов
4325 Просмотров
Последний ответ Май 13, 2011, 12:51:01
от SET777
7 Ответов
5453 Просмотров
Последний ответ Сентябрь 24, 2011, 12:56:18
от zeionline
5 Ответов
2088 Просмотров
Последний ответ Апрель 16, 2014, 10:44:00
от AZJIO
2 Ответов
1634 Просмотров
Последний ответ Июль 10, 2014, 14:45:54
от shyra1976
1 Ответов
524 Просмотров
Последний ответ Июль 02, 2015, 09:28:41
от C2H5OH
14 Ответов
4767 Просмотров
Последний ответ Февраль 19, 2016, 18:19:19
от alex33