С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/86: Рейтинг темы: голосов - 86, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 8

Строки: Удалить слова на согласные заданной длины

12.05.2013, 00:59. Показов 16872. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вот задание:
Задать некоторый текст. Изменить текст следующим образом: удалить из текста все слова заданной длины, начинающиеся на согласную букву.

Помогите студенту, пожалуйста.

Добавлено через 3 часа 32 минуты
Вот что получилось у меня (удаляется слово из 5-ти букв, но добавляется лишний пробел, как его убрать. И как найти слова начинающиеся на гласную?) :

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
String text = "zdes text iz kotorogo nuzhno udalit vse slova iz pjati bukv kotoryje nachinajutsja na glasnuju bukvu";
        // Вывод текста
        System.out.println(text);
              
         
        String[] strArr= text.split(" ");
        for (int i=0;i<strArr.length;i++){
            
            if(strArr[i].length()%5==0){
                strArr[i]="";
               
            }       
             
            System.out.print(strArr[i]+" ");
        }
   
    // вывод результата
        System.out.println("\n\n" + text);
Добавлено через 1 час 20 минут
Цикл изменил на вот такой, но как-то сильно не красиво, хотя работает. Правда двойные пробелы остались.
Java
1
2
3
4
5
for (int i=0;i<strArr.length;i++){
            char first = strArr[i].charAt(0); // первая буква каждого слова
            if((strArr[i].length()%5==0)  &&  ((first != 'a')&&(first != 'e')&&(first != 'i')&&(first != 'o')&&(first != 'u')&&(first != 'y'))){
                strArr[i]="";
              }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2013, 00:59
Ответы с готовыми решениями:

Удалить из строки слова заданной длины
Удалить из строки все слова, длина которых меньше пяти символов. В строке не используются знаки препинания. вот что у нас получилось но...

Удалить часть строки заданной длины с заданной позиции
Ввести с клавиатуры строку. Удалить из этой строки ее часть с заданной позиции и заданной длины. Номер позиции и количество удаляемых...

Удалить из строки ее часть с заданной позиции и заданной длины
Ввести с клавиатуры строку. Удалить из этой строки ее часть с заданной позиции и заданной длины. Номер позиции и количество удаляемых...

12
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
12.05.2013, 01:45
вот так кажется пофункциональней получилось
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Clazz {
 
    public static void main(String[] args) {
        String text = "zdes text iz kotorogo nuzhno udalit vse slova iz pjati bukv kotoryje nachinajutsja na glasnuju bukvu";
        System.out.println(text);
        System.out.println("\n\n" + formatText(text));
        
    }
 
    public static String formatText(String incomingText) {
        StringBuilder sb = new StringBuilder();
        String[] strArr = incomingText.split(" ");
        for (int i = 0; i < strArr.length; i++) {
 
            if ((strArr[i].length() % 5 != 0) && !isVowel(strArr[i])) {
                sb.append(strArr[i]).append(" ");
            }
        }
 
        String outText = sb.toString().trim();
        return outText;
    }
 
    public static boolean isVowel(String incomingText) {
        switch (incomingText.charAt(0)) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
        case 'y':
            return true;
        default:
            return false;
 
        }
    }
}
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.05.2013, 02:15
tankomaz, вы забыли делать
Java
1
(char)Character.toLowerCase(incomingText.charAt(0))
2
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
12.05.2013, 02:18
mutagen, логично, проклепал, вот поправил для ТС
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Clazz {
 
    public static void main(String[] args) {
        String text = "zdes text iz kotorogo nuzhno udalit vse slova iz pjati bukv kotoryje nachinajutsja na glasnuju bukvu";
        System.out.println(text);
        System.out.println("\n\n" + formatText(text));
        
    }
 
    public static String formatText(String incomingText) {
        StringBuilder sb = new StringBuilder();
        String[] strArr = incomingText.split(" ");
        for (int i = 0; i < strArr.length; i++) {
 
            if ((strArr[i].length() % 5 != 0) && !isVowel(strArr[i])) {
                sb.append(strArr[i]).append(" ");
            }
        }
 
        String outText = sb.toString().trim();
        return outText;
    }
 
    public static boolean isVowel(String incomingText) {
        switch ((char)Character.toLowerCase(incomingText.charAt(0))) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
        case 'y':
            return true;
        default:
            return false;
 
        }
    }
}
1
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 8
12.05.2013, 13:28  [ТС]
Спасибо, но работает не совсем так как нужно, удаляет и другие слова.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.05.2013, 13:48
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 *
 * @author mutagen
 */
public class TextFilter {
 
    public static void main(String[] args) {
        String text = "zdes text iz kotorogo nuzhno udalit vse slova iz pjati bukv kotoryje nachinajutsja na glasnuju bukvu";
        System.out.println(text);
        
        int charCount = 6;
        
        String [] words = text.split(" ");
        StringBuilder builder = new StringBuilder();
        for (String s : words) {
            if(!(isVowel(s.charAt(0)) && s.length() == charCount)) {
                builder.append(s).append(" ");
            }
        }
        String rezult = builder.toString().trim();
        System.out.println(rezult);
        
    }
 
    public static boolean isVowel(char c) {
        switch (Character.toLowerCase(c)) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
            case 'y':
                return true;
            default:
                return false;
        }
    }
}
1
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 8
12.05.2013, 14:30  [ТС]
Спасибо, но этот вариант удаляет только первое слово.

Вот используя ваш код я усовершенствовал свой, работает так как нужно:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Laba2 {
 
    public static void main(String[] args) {
        // Иициализация текста
        String text = "zdes text iz kotorogo nuzhno udalit vse slova iz pjati bukv kotoryje nachinajutsja na glasnuju bukvu yesli vsje rabotajet to slovo yesli ostanetsja";
        // Вывод текста
        System.out.println(text);
        
        String[] strArr = text.split(" ");//разбиваем текст на массив слов
        StringBuilder sb = new StringBuilder();
        for (int i=0;i<strArr.length;i++){
           
          char first = strArr[i].charAt(0); // первая буква каждого слова
          
            if(!((strArr[i].length()%5==0)  &&  ((first != 'a')&&(first != 'e')&&(first != 'i')&&(first != 'o')&&(first != 'u')&&(first != 'y')))){
                                   
                sb.append(strArr[i]).append(" ");
              }       
             
        }
           String outText = sb.toString().trim();
           
           // вывод результата
        System.out.print(outText+" "+"\n\n");
           
            
    }
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.05.2013, 14:55
Цитата Сообщение от salexus Посмотреть сообщение
Спасибо, но этот вариант удаляет только первое слово.
мой вариант специально под 6 букв, чтобы вы разбирались в коде а не просто копировали
что собственно и произошло
1
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 8
12.05.2013, 15:55  [ТС]
Я пытался разобраться. Но код удаляет только слово udalit. Меняю на значение 5, удаляет опять только на гласные.
Также мне не понятна следующая строка for (String s : words), если можно подробнее что происходит после for.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
12.05.2013, 15:58
Цитата Сообщение от salexus Посмотреть сообщение
Я пытался разобраться. Но код удаляет только слово udalit. Меняю на значение 5, удаляет опять только на гласные.
Также мне не понятна следующая строка for (String s : words), если можно подробнее что происходит после for.
называется for-each (перебирай каждый)
сокращенная версия
Java
1
2
3
4
for (int i = 0; i < words.length(); i++) {
String s = words[i];
...
}
в данном случае каждый элемент поочереди (из массива words) попадает в переменную s (которая объявлена как String, т.к. мы ожидаем именно этот тип). Вот так с первого и по последний элемент мы проходим по массиву и "что-то" делаем
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.05.2013, 17:41
Цитата Сообщение от salexus Посмотреть сообщение
удаляет опять только на гласные
ну у вас в задаче же условие удалять начинающиеся на гласные
вот мы и писали под это условие
1
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 8
12.05.2013, 17:43  [ТС]
Спасибо всем за помощь, со всем разобрался.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.05.2013, 17:45
ой нет на согласные )))

тогда в моём коде надо в строке
Java
1
 if(!(isVowel(s.charAt(0)) && s.length() == charCount)) {
добавить ещё один ! знак
Java
1
 if(!(!isVowel(s.charAt(0)) && s.length() == charCount)) {
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2013, 17:45
Помогаю со студенческими работами здесь

Написать и удалить слова заданной длины
Программу пробовал сделать по данному условию Из произвольного текста, содержащего не более 10 строк, в каждой строке не более 80...

Удалить все слова в строке заданной длины
Помогите с задачкой. С клавиатуры вводится строка 1)Удалить все слова в строке заданной длины. Например если длина 5,то удаляются все...

Удалить в строке все слова заданной длины
С клавиатуры вводится строчка. 1.Удалить все слова в строке заданной длины

Для произвольного текста вывести и удалить слова заданной длины
создать программу в паскаль для произвольного текста записать и удалить слова заданной длины. помогите сделать, пожалуйста! надо сделать...

Обработка строковых данных. В тексте удалить все слова заданной длины
В заданном тексте удалить все слова заданной длины. Вывести полученный текст. Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru