Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > замена символов


Автор: hobbs 9.3.2012, 11:49
Пытаюсь адаптировать один плагин для сервера minecraft'a к русскому языку.
Вроде бы все получается, но один момент не дает сделать работу идеальной:
Код

return word.replace("b", "в").replace("b", "б").replace("b", "ь")

полный код: https://github.com/ZachBora/CensorIt/blob/master/src/com/worldcretornica/censorit/CensorItAPI.java

Каким образом выйти из сложившиеся ситуации?


p.s.Ситуация достаточно простая и банальная, но для новичка в яве вызывает массу проблем.

Автор: dorogoyIV 9.3.2012, 16:02
по ссылке кажется написан то ли лексический, то ли синтаксический анализатор...
у тебя совсем другая проблема...
вот этот код, он здесь при чем?!

какой вопрос, такой ответ ;)

Автор: hobbs 9.3.2012, 18:53
dorogoyIV, если я не правильно сформулировал вопрос, то задайте встречный или уточните детали проблемы

Автор: LSD 9.3.2012, 18:56
Цитата(hobbs @  9.3.2012,  19:53 Найти цитируемый пост)
задайте встречный или уточните детали проблемы 

Цитата(dorogoyIV @  9.3.2012,  17:02 Найти цитируемый пост)
вот этот код, он здесь при чем?!

Автор: hobbs 9.3.2012, 19:01
LSD,  этот код взят из плагина для фильтрации чата от мата( описание плагина: http://goo.gl/V1bG9 )

А вот строки, которые позволяют видит этому плагину русский язык:
Код

        word = word.replaceAll("[^À-ßà-ÿ0-9" + _ReplacementChar + " \t\n]", "");
        //System.out.println("Strip: " + word);
        return word;
        //return word.replaceAll("[^A-Za-z0-9" + _ReplacementChar + "\t\n]", "");
    }
    
    public static String replacePseudoLetters(String word)
    {
        return word.replace("@", "à").replace("a", "à").replace("b", "á")
                .replace("6", "á").replace("B", "â").replace("v", "â")
                .replace("g", "ã").replace("r", "ã").replace("d", "ä")
                .replace("e", "å").replace("ё", "å").replace("zh", "æ")
                .replace("}|{", "æ").replace("z", "ç").replace("3", "ç")
                .replace("i", "è").replace("u", "è").replace("i", "é")
                .replace("y", "é").replace("u", "é").replace("|{", "ê")
                .replace("i{", "ê").replace("k", "ê").replace("JI", "ë")
                .replace("l", "ë").replace("m", "ì").replace("n", "í")
                .replace("h", "í").replace("0", "î").replace("o", "î")
                .replace("p", "ï").replace("n", "ï").replace("p", "ð")
                .replace("r", "ð").replace("s", "ñ").replace("c", "ñ")
                .replace("t", "ò").replace("m", "ò").replace("u", "ó")
                .replace("y", "ó").replace("f", "ô").replace("}{", "õ")
                .replace("h", "õ").replace("x", "õ").replace("u,", "ö")
                .replace("c", "ö").replace("ch", "÷").replace("sh", "ø")
                .replace("sch", "ù").replace("b", "ü").replace("bi", "û")
                .replace("io", "þ").replace("ya", "ÿ").replace("|<", "ê")
                .replace("\\/", "â").replace("()", "î").replace("|3", "â")
                .replace("/<","ê").replace("$", "s");

Но при таком коде будет пропускать много слов, а записывать все варианты написания одного слова в словарь очень тяжело.

Автор: Stolzen 10.3.2012, 08:34
Попробуйте StringUtils.replaceEach из Commons Lang

Добавлено через 2 минуты и 32 секунды
http://commons.apache.org/lang/

Автор: aleksandy 11.3.2012, 12:08
ОФФТОП

Если надо заменить 1 символ на другой, то лучше использовать для этого соответствующий метод, а не компилить каждый раз регулярку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)