Здравствуйте. Приходится иметь дело с русскими текстами, где присутствует нежелательное вкрапление символов английского алфавита.
Т. к. расположение вкраплений всегда разное и не подчинено каким-либо правилам, я не могу осуществлять поиск слов в тексте.
Решение — заменить латинские буквы 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/
Комментариев нет:
Отправить комментарий