Страницы

Поиск по вопросам

пятница, 26 октября 2018 г.

Быстрая замена в тексте латинских символов на кириллические со сходным начертанием

Здравствуйте. Приходится иметь дело с русскими текстами, где присутствует нежелательное вкрапление символов английского алфавита.

Т. к. расположение вкраплений всегда разное и не подчинено каким-либо правилам, я не могу осуществлять поиск слов в тексте.
Решение — заменить латинские буквы ABEKMHOPCTXaeopcyx на соответствующие им кириллические АВЕКМНОРСТХаеорсух: A → А, B → В и т. д. Как в Sublime Text эффективнее всего произвести все 18 замен?
Этот вопрос частный случай более общего: как произвести множество замен в одном регулярном выражении? Спасибо.


Ответ

Плагин для ST2, выполняющий желаемое:
# -*- coding: utf-8 -*- import sublime, sublime_plugin
class MultipleReplace(sublime_plugin.TextCommand): def run(self, edit): target = "ABEKMHOPCTXaeopcyx" # en replacer = u"абекмнорстхАЕОРСУХ" # ru region = sublime.Region(0, self.view.size()) fullText = unicode( self.view.substr( region ) ) count = 0 for ch in range( len(target) ): count += fullText.count( target[ch] ) fullText = fullText.replace( target[ch], replacer[ch] ) self.view.replace( edit, region, fullText ) sublime.status_message( "Hidden chars replaced: " + str( count ) )
Плагин для ST3, выполняющий желаемое:
# -*- coding: utf-8 -*- import sublime, sublime_plugin
class MultipleReplace(sublime_plugin.TextCommand): def run(self, edit): target = "ABEKMHOPCTXaeopcyx" # en replacer = u"абекмнорстхАЕОРСУХ" # ru region = sublime.Region(0, self.view.size()) fullText = self.view.substr( region ) count = 0 for ch in range( len(target) ): count += fullText.count( target[ch] ) fullText = fullText.replace( target[ch], replacer[ch] ) self.view.replace( edit, region, fullText ) sublime.status_message( "Hidden chars replaced: " + str( count ) )
Вечером распишу подробнее, как устанавливать плагины в ST.

Здесь можно найти, как устанавливать плагин: https://habrahabr.ru/post/136529/

Комментариев нет:

Отправить комментарий