Как можно реализовать опечатки ?

Поддержка
  • Допустим есть текст:

    Съешь ещё этих мягких французских булок, да выпей чаю

    Допустим как можно реализовать что на каждую букву в строке была 2% вероятность на замену ее из списка этой буквы, допустим у буквы С возможна замена на м,ч,[<BACK>] в случае когда 2% попало выйдет:

    Мъешь ещё этих мягких французских булок, да выпей чаю

    и так оно каждую букву проверяет на вероятность и меняет рандомно из списка для этого символа, или еще есть какие идеи?

  • Можно делать так (ниже чистый JavaScript, для вывода результата можно запустить в своем родном браузере в консоли):

    var text = 'Съешь ещё этих мягких французских булок, да выпей чаю'   //Нужный текст
    var object = {                                                       //Какие буквы и на что можно заменять
      'С': ['S','('],
      'с': ['s','('],
      'о': ['0','()'],
      'н': ['n','|-|'],
      'з': ['3']
    }
    
    function replacement(text, object, chance) {  //Функция изменения буквы с указанным шансом (chance)
      function randomChance() {                   //Функция случайного шанса
        var random = Math.random() * 100          //Случайное число от 0 до 99
        return (random < chance) ? true : false   //Шанс включить замену текста
      }
    
      var symbols = text.split('')                //Разбиваем текст на символы
      for (var i = 0; i < symbols.length; i++) {  //Замена символов
        if (randomChance()) {                     //Если сработал шанс, продолжить замену, иначе не менять
          for (var key in object) {               //Поиск символа в объекте
            if (key === symbols[i]) {             //Если в объекте нашелся символ, продолжить замену, иначе не менять
              
              //Просто лог, чтобы видеть изменения в консоли. Можно удалить
              console.log('Позиция: ' + (i+1) +' - Изменяю букву "' + symbols[i] + '"' + ' на "' + object[key][Math.floor(Math.random() * object[key].length)] + '"')
    
              symbols[i] = object[key][Math.floor(Math.random() * object[key].length)] //Заменить символ на случайный
              break;
            }
          }
        }
      }
      return symbols.join('')                     //В конце склеить массив измененных букв в строку
    }
    
    var result1 = replacement(text, object, 2)    //Применить функцию замены букв с шансом в 2%
    var result2 = replacement(text, object, 50)   //Применить функцию замены букв с шансом в 50%
    var result3 = replacement(text, object, 100)  //Применить функцию замены букв с шансом в 100%
    console.log('Шанс замены 2%. Результат: ' + result1)
    console.log('Шанс замены 50%. Результат: ' + result2)
    console.log('Шанс замены 100%. Результат: ' + result3)
    

    А в BAS можно использовать так. Пример проекта: ReplaceSymbolsChance.xml

    Это в основном для спама. Логика примерно такая: каждый символ с указанным шансом может измениться на то, что нужно.

  • @jofamo2305 о, homoglyphs

  • @jofamo2305 Видел как-то сервис, который опечатки генерирует.