Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 17.01.2015
Сообщений: 18
1

Добавление в строку пробелов после знака препинания, если их нет

16.04.2015, 20:49. Показов 4636. Ответов 7
Метки нет (Все метки)

Программу написала, но не смогла довести до ума. Помогите
Преподаватель оставил такие замечания :
1. Нет комментариев.
2. Если пробел после знака препинания будет стоять, то результат будет неверным.
3. Для редактирования содержимого строки лучше использовать класс StringBuilder или StringBuffer, иначе в маленькой программе будет создано 7 объектов строк.

Java
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Введите строку: ");
    String s = in.nextLine();
        s = s.replace(".", ". ");
        s = s.replace(",", ", ");
        s = s.replace("?", "? ");
        s = s.replace("!", "! ");
        s = s.replace(":", ": ");
        s = s.replace(";", "; ");
        System.out.println(s);
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2015, 20:49
Ответы с готовыми решениями:

Проверить, содержится ли пробел после знака препинания, и если нет — вставить
Пропустил весь курс по болезни, судорожно осваиваю за день. Голова кипит со строками, вот задание...

Как вставить пробел после знака препинания, если его там нет?
Приветствую! Такую вот программку реализовал. Она считывает строку (как сделать, чтобы считывала...

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после...

В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там нет.
В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там...

7
Автоматизируй это!
Эксперт Python
4205 / 2887 / 856
Регистрация: 30.03.2015
Сообщений: 9,340
Записей в блоге: 15
16.04.2015, 21:31 2
корявенько конечно, но работает с СтрингБилдером, сначала создай массив типа char со знаками препинания (charIn):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Scanner in = new Scanner(System.in);
        System.out.println("Введите строку: ");
        StringBuilder sb=new StringBuilder();//создаем объект стрингбилдер
        sb.append(in.nextLine()); //вносим в стрингбилдер то, что пользователь введет с клавиатуры
        for (int i=1; i<sb.length()-1;i++) { //посимвольно просматриваем введенную строку
            for (char ch:charIn) { // сравниваем с массивом знаков препинания
                if (sb.charAt(i)==ch) { // если символы совпали и ...
                    if (!sb.substring(i+1, i+2).equals(" ")) { // ... следующий после знака препинания символ НЕ пробел...
                      sb.insert(i+1, ' ');// вставляем пробел
                    }
                    
                }
            }
        }
        System.out.println(sb.toString()); //выводим результат
1
1453 / 790 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.04.2015, 21:34 3
Как то так:
Java
1
2
3
4
5
public static void main(String[] args) {
        String s = "Replaces,each,substring, of;this?string that matches the given.regular expression with#the@given replacement.";
        s = s.replaceAll("(?<=\\p{Punct})(?=\\w)", " ");
        System.out.println(s);
    }
0
1 / 1 / 0
Регистрация: 17.01.2015
Сообщений: 18
16.04.2015, 22:04  [ТС] 4
Подскажите, как создать массив типа char? Не могу разобраться..
0
282 / 262 / 173
Регистрация: 27.07.2014
Сообщений: 584
16.04.2015, 22:48 5
Java
1
char [] chars = new char[10];
0
1 / 1 / 0
Регистрация: 17.01.2015
Сообщений: 18
16.04.2015, 23:35  [ТС] 6
у меня не получается его заполнить, мне нужно чтобы он был заполнен знаками препинания
0
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 506
16.04.2015, 23:38 7
Вот так уже сделать не можем?

Java
1
2
3
4
        chars[0] = ',';
        chars[1] = '.';
        ...
        chars[9] = '!';
0
591 / 330 / 140
Регистрация: 08.08.2014
Сообщений: 1,083
17.04.2015, 00:39 8
1. Несколько знаков препинания подряд - пробел добавляется только после последнего.
2. Знак препинания с пробелом после него - дополнительный пробел не добавляется.
3. Знак препинания в конце строки - пробел не добавляется.
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
39
40
41
42
43
44
45
46
47
public class MainApp {
 
    public static void main(String[] args) {
 
        //У строки есть 'indexOf', который можно использовать чтобы 
        //вручную не перебирать char[] в цикле
        String delimiters = ".,?!:;";
 
        String src = "Qwe?Asd!!! Test str???Next str,and next... Then,some;at end.";
 
        //Scanner in = new Scanner(System.in);
        //System.out.print("Введите строку: ");
        //src = in.nextLine();
 
        //Для формирования результата без перекопирования строки при каждой конкатенации
        StringBuilder result = new StringBuilder();
 
        //Признак, что предыдущий символ был разделителем
        boolean prevCharIsDelimiter = false;
 
        //По символам строки
        for (int i = 0; i < src.length(); i++) {
            //Сохранить текущий символ в локальную перменную,
            //чтобы каждый раз не вызывать метод получения по индексу
            char ch = src.charAt(i);
 
            //Если символ является разделителем, то отметить этот факт в prevCharIsDelimiter
            if (delimiters.indexOf(ch) != -1) {
                prevCharIsDelimiter = true;
 
            //Если символ НЕ разделитель
            } else {
                //Если символ НЕ пробел и предыдущий символ разделитель, то добавить пробел.
                if (ch != ' ' && prevCharIsDelimiter) {
                    result.append(' ');
                }
                //Снять признак "разделитель" для следующей итерации цикла
                prevCharIsDelimiter = false;
            }
 
            //Добавить текущий символ в выходную строку
            result.append(ch);
        }
 
        System.out.format("\nsrc:\t%s\nresult:\t%s\n", src, result);
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2015, 00:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

Ввести строку символов и вставить пробел после каждого знака препинания
А как это будет написано на с#? &quot;Ввести строку символов и вставить пробел после каждого знака...

Если после знака препинания более одного пробела, то лишние пробелы удалить
разобрать модуль, содержащий функции для обработки строковых данных: - если перед знаками...

Если предложение начинается с пробелов, считать строку после пробелов. Правильно ли работает функция?
Скажите пожалуйста правильно ли я написала функцию которая: если предложение начинается с пробелов...

Добавить пробелы после знаков препинания, если их там нет
Написать программу, выполняющую чтение текстового файла“input.in” и выполняющую его преобразование...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.