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


Автор: sincerity 25.12.2013, 18:48
Помогите, пожалуйста, решить задачу.
Напишите программу, печатающую на экране только слова, найденные в некотором файле. Словом считается последовательность букв русского и английского алфавита.

Автор: Samotnik 25.12.2013, 19:27
Код

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class WordDetector {

    public static void main(String[] args) {
        String pathToFile = "d:/test.txt";
        String fileContains = "";
        try {
            fileContains = readFile(pathToFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String[] words = fileContains.split("\\s+");
        for (String word : words) {
            boolean isCyrillicLetter = false;
            boolean isLatinLetter = false;
            for (int i = 0; i < word.length(); i++) {
                if (isCyrillicLetter(word.charAt(i))) {
                    isCyrillicLetter = true;
                }
                if (isLatinLetter(word.charAt(i))) {
                    isLatinLetter = true;
                }
            }
            if (isCyrillicLetter && isLatinLetter) {
                System.out.println("There is a 'word' with English and Russian characters: " + word);
            }
        }
    }

    private static boolean isCyrillicLetter(char c) {
        return Character.UnicodeBlock.CYRILLIC.equals(Character.UnicodeBlock.of(c));
    }

    private static boolean isLatinLetter(char c) {
        return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
    }

    private static String readFile(String pathToFile) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(pathToFile));
        try {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();
            while (line != null) {
                sb.append(line);
                line = br.readLine();
            }
            return sb.toString();
        } finally {
            br.close();
        }
    }
}


test.txt
Код

Mama мыla раму

ololo

trollo

ололошенькаTrololoshenka


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