Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2017, 14:01   #1
MaxPAyne007
 
Регистрация: 13.10.2016
Сообщений: 3
По умолчанию Перевод Из кириллицы в латиницу

Надо перевести текст в латиницу

Всем привет Друзья
vsem privet druzьya


Выполняется все это через Scanner.
Как сделать что бы читал > Всем привет Друзья< из txt файла,потом после перевода заменил текст на латиницу >vsem privet druzьya<

Плиз помогите

Код:
import java.util.Scanner;

public class Translater
{
    public static void main ( String [] args ) // asks the user to select which translation (latyn to english or english to latyn) and then prompts user to enter the text to be translated
    {
        Scanner input = new Scanner( System.in );

        System.out.println( "Enter sentence" );
        String english = input.nextLine();
        System.out.println( stringTolatyn( english ) );
    }


    public static String encode (String toEncode)
    {
        String latyn = toEncode;

        if (toEncode.equalsIgnoreCase("а"))
            latyn = "a";
        if (toEncode.equalsIgnoreCase("б"))
            latyn = "b";
        if (toEncode.equalsIgnoreCase("в"))
            latyn = "v";
        if (toEncode.equalsIgnoreCase("г"))
            latyn = "g";
        if (toEncode.equalsIgnoreCase("д"))
            latyn = "d";
        if (toEncode.equalsIgnoreCase("е"))
            latyn = "e";
        if (toEncode.equalsIgnoreCase("ж"))
            latyn = "zh";
        if (toEncode.equalsIgnoreCase("з"))
            latyn = "z";
        if (toEncode.equalsIgnoreCase("и"))
            latyn = "i";
        if (toEncode.equalsIgnoreCase("й"))
            latyn = "j";
        if (toEncode.equalsIgnoreCase("к"))
            latyn = "k";
        if (toEncode.equalsIgnoreCase("л"))
            latyn = "l";
        if (toEncode.equalsIgnoreCase("м"))
            latyn = "m";
        if (toEncode.equalsIgnoreCase("н"))
            latyn = "n";
        if (toEncode.equalsIgnoreCase("о"))
            latyn = "o";
        if (toEncode.equalsIgnoreCase("п"))
            latyn = "p";
        if (toEncode.equalsIgnoreCase("р"))
            latyn = "r";
        if (toEncode.equalsIgnoreCase("с"))
            latyn = "s";
        if (toEncode.equalsIgnoreCase("т"))
            latyn = "t";
        if (toEncode.equalsIgnoreCase("у"))
            latyn = "u";
        if (toEncode.equalsIgnoreCase("ф"))
            latyn = "f";
        if (toEncode.equalsIgnoreCase("х"))
            latyn = "x";
        if (toEncode.equalsIgnoreCase("ц"))
            latyn = "c";
        if (toEncode.equalsIgnoreCase("ч"))
            latyn = "ch";
        if (toEncode.equalsIgnoreCase("ш"))
            latyn = "sh";
        if (toEncode.equalsIgnoreCase("щ"))
            latyn = "shh";
        if (toEncode.equalsIgnoreCase("ы"))
            latyn = "y";
        if (toEncode.equalsIgnoreCase("э"))
            latyn = "e";
        if (toEncode.equalsIgnoreCase("ю"))
            latyn = "yu";
        if (toEncode.equalsIgnoreCase("я"))
            latyn = "ya";
        return latyn;
    }
    public static String stringTolatyn( String text )
    {
        String newText = "";
        String selectedChar;
        String convertedChar;
        for (int i = 0; i < text.length(); i++)
        {
            //Select the next character
            selectedChar = text.charAt(i) + "";

            // Convert the character
            convertedChar = encode(selectedChar);

            if (convertedChar.equalsIgnoreCase("")) // "|" separates each word represented in latyn code
            {
                newText = newText + " "; //создер арасындагы танба
            }
            // Add the converted text, and add a space
            else
            {
                newText = newText + convertedChar;
                if (!convertedChar.equalsIgnoreCase(""))
                {
                    newText = newText + "";
                }
            }
        }
        return newText;
    }
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.10.2017 в 14:08.
MaxPAyne007 вне форума Ответить с цитированием
Старый 01.11.2017, 20:35   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код конечно не без недостатком, кое-что не реализовано. Но надеюсь общая мысль понятна.
Код:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Translate {
    private static Map<Character, String> map = new HashMap<Character, String>() {
        {
            put('а', "a");
            put('б', "b");
            put('в', "v");
            put('г', "g");
            put('д', "d");
            put('е', "e");
            put('ж', "zh");
            put('з', "z");
            put('и', "i");
            put('й', "j");
            put('к', "k");
            put('л', "l");
            put('м', "m");
            put('н', "n");
            put('о', "o");
            put('п', "p");
            put('р', "r");
            put('с', "s");
            put('т', "t");
            put('у', "u");
            put('ф', "f");
            put('х', "x");
            put('ц', "c");
            put('ч', "ch");
            put('ш', "sh");
            put('щ', "shh");
            put('ы', "y");
            put('э', "e");
            put('ю', "yu");
            put('я', "ya");
        }
    };

    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream(new File("test_rus.txt"))) {
            Scanner scanner = new Scanner(fis);


            for (; scanner.hasNext(); ) {
                String line = scanner.nextLine();

                for (int i = 0; i < line.length(); i++) {
                    char ch = line.charAt(i);

                    if (!map.containsKey(ch)) {
                        System.out.print(ch);
                        continue;
                    }
                    System.out.print(map.get(ch));
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 01.11.2017, 20:55   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это транслитерация называется.

https://habrahabr.ru/post/265455/
Цитата:
Сообщение от MaxPAyne007 Посмотреть сообщение
ь
чот не похоже на латиницу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2017, 23:59   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Да, совсем не похоже. Но пусть будет так.
Немного подправил.

Код:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import static java.lang.System.out;

public class Translate {
    
    private static final String TEST_RUS_TXT = "test_rus.txt";
    
    private static Map<Character, String> map = new HashMap<Character, String>() {
        {
            put('а', "a");
            put('б', "b");
            put('в', "v");
            put('г', "g");
            put('д', "d");
            put('е', "e");
            put('ж', "zh");
            put('з', "z");
            put('и', "i");
            put('й', "j");
            put('к', "k");
            put('л', "l");
            put('м', "m");
            put('н', "n");
            put('о', "o");
            put('п', "p");
            put('р', "r");
            put('с', "s");
            put('т', "t");
            put('у', "u");
            put('ф', "f");
            put('х', "x");
            put('ц', "c");
            put('ч', "ch");
            put('ш', "sh");
            put('щ', "shh");
            put('ы', "y");
            put('э', "e");
            put('ю', "yu");
            put('я', "ya");
        }
    };

    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream(new File(TEST_RUS_TXT))) {
            Scanner scanner = new Scanner(fis);

            for (; scanner.hasNext(); ) {
                String line = scanner.nextLine();
                final int LENGTH = line.length();
                for (int i = 0; i < LENGTH; i++) {
                    char ch = Character.toLowerCase(line.charAt(i));
                    out.print((!map.containsKey(ch)) ? ch : map.get(ch));
                }
                out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Я не мог смотреть на кучу if. ))))
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 02.11.2017 в 00:03.
Bugrimov вне форума Ответить с цитированием
Старый 02.11.2017, 02:57   #5
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

г..а я забил) вспомнил, что в яве нада будет put мудрить, в отличие от ++, и забил
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В тексте всю латиницу отформатировать курсивом lion78 Microsoft Office Word 7 27.10.2020 08:50
Перекодировка с кириллицы на латиницу asiks1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 14.05.2012 18:47
изменить криллицу на латиницу assasinukraine Общие вопросы C/C++ 3 25.12.2010 23:51
Как преобразовать русские буквы в латиницу? Alexander_Gr Microsoft Office Excel 8 03.12.2007 19:49