Как вернуть только строки, заканчивающиеся знаком препинания? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу построить метод, который возвращает только строки, заканчивающиеся знаком пунктуации.Проблема в том, что когда я компилирую, он говорит, что не может найти «я», так что мне делать?

public static String ktheFjalite(String[] s){
    int nrFjaleve = 0;
    int nrZanoreve = 0;
    for (int j = 0; j <s.length; j++){
            if (s[j].charAt(j) == ' '){
                nrFjaleve++;
            }
        }
    for (int k = 0; k < s.length; k++){
            if (s[k].contains("a")||s[k].contains("e")||s[k].contains("i")||s[k].contains("o")||s[k].contains("u")||s[k].contains("y")){
                nrZanoreve++;
            }
        }

    if(s[i].endsWith(".")||s[i].endsWith("!")||s[i].endsWith("?")||s[i].endsWith("...")){
        if(nrFjaleve<=6){
            if(nrZanoreve<=8) {
                return (Arrays.toString(s));
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Другой способ не использовать регулярные выражения или шаблоны:

Рассмотрим String marks = "...";, где многоточие представляет все символы, которые вы считаете знаками препинания.

Затем обратите внимание, что последний символa String s равно c = s.charAt(s.length() - 1); //Minus one or OutOfBoundsException

Тогда marks.contains(c) будет истинным, если последний символ строки является знаком пунктуации.

0 голосов
/ 13 февраля 2019

Я бы использовал регулярное выражение, чтобы найти все слова, которые заканчиваются пунктуацией, и вернуть его в список.Для получения дополнительной информации о регулярных выражениях нажмите здесь .

private static List<String> findPunctuation(String sentence) {
    List<String> neededWords = new ArrayList<String>();
    String[] words = sentence.split(" ");

    for (String word : words)
        if (word.matches(".*[\\?!\\.]")) 
            neededWords.add(word);

    return neededWords;
}

Возможно, это не идеальное решение для вас, но оно должно дать вам направление.

РЕДАКТИРОВАТЬ

Если вы хотите вернуть слово только при наличии количества слов x, вы можете добиться этого с помощью этого:

private static String findPunctuation(String sentence) {

    Pattern p = Pattern.compile("(?:.* ){6,8}(.*[\\?!\\.])$");
    Matcher m = p.matcher(sentence);

    while(m.find())
        return m.group(1);

    return null;
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...