@dfggfd

Можно ли сделать автозамену русских букв а,о (маленькие) на английские?

Мучался с нейронкой часа полтора, но она не дала ни единого нормального кода. Я работаю на двух сайтах и просто копирую вопрос с одного на другой но уже с ответами. И сегодня столкнулся с проблемой, что на сайте зачем-то поменяли а,о на английские и теперь копируя текст я не могу сразу найти ответ( а вбивать каждое слово на каждый вопрос займет очень много времени). Могу скинуть более менее подходящий код к моей просьбе, но там не работает ctrl
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Легко - ставите расширение TemperMonkey и добавляете следующий скрипт в него:
// ==UserScript==
// @name         Исправление текста
// @namespace    http://tampermonkey.net/
// @version      2024-10-22
// @description  Заменяет все английские буквы во всех текстах на русские
// @author       VoidVolker
// @match        https://24forcare.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=24forcare.com
// @grant        none
// ==/UserScript==

;(function () {
    'use strict'
    $(function () {
        console.log('Скрипт запущен в работу...')

        // Английские символы
        let en = 'ABCEHKMOPTXYabcehkmoptxy'
        // Русские символы
        let rus = 'АВСЕНКМОРТХУавсенкмортху'
        // Таблица замены en -> ru
        let map = {}
        en.split('').forEach((char, i) => (map[char] = rus[i]))

        // Счетчик замен
        let charsCounter = 0
        let nodesCounter = 0

        // Нормализовать текст
        // В идеале следовало бы извлечь из текста слова
        // И уже в словах проверять наличие разных символов 
        function normalizeEn2Rus(str) {
            // Конвертируем строку в массив
            let arr = str.split('')
            // И проходим по всем символам в массиве
            for (let i in arr) {
                // Получаем символ
                let char = arr[i]
                // Если символ найден - заменяем его, если нет - оставляем оригинальный
                arr[i] = map[char] ?? char
                charsCounter++
            }
            // Конвертируем массив в строку и возвращаем результат
            return arr.join('')
        }

        // Получаем список всех элементов на странице
        let items = $('*', document.body)

        // Проходим по всем элементам
        items.each((i, item) => {
            // Исключаем ссылки, скрипты и стили из поиска
            if (item.nodeName === 'A' || item.nodeName === 'SCRIPT' || item.nodeName === 'STYLE') { return }
            // Получаем список детей у элемента
            Array.from(item.childNodes)
                // Фильтруем только текстовые элементы и те, в которых есть текст
                .filter((el) => el.nodeType == Node.TEXT_NODE && el.textContent?.length > 0)
                .forEach((el) => {
                    // Нормализуем текст элемента
                    el.textContent = normalizeEn2Rus(el.textContent)
                    console.log(el.textContent)
                    nodesCounter++
                })
        })

        console.log(`Скрипт завершил работу успешно. Всего заменено символов [${charsCounter}] в [${nodesCounter}] текстовых элементах.`)
    })
})()

В результате все английские буквы, похожие на русские будут заменены обратно на русские автоматически при заходе на сайт и открытии любой страницы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@loheb
curl https://example.com/ | sed "s/a/A/g"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1256  100  1256    0     0    826      0  0:00:01  0:00:01 --:--:--   826
<!doctype html>
<html>
<heAd>
    <title>ExAmple DomAin</title>

И блокировка клавиш не поможет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы