Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 29

Исключение в replaceAll и regex

03.04.2019, 13:41. Показов 2964. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Следуещее выражение заменяет все элементы на *, а как добавить исключение типа: все кроме символа который ввел пользователь ?
String movieStringRight = movieString.replaceAll("[a-zA-Z]", "*");

Java
1
2
3
4
5
6
7
public String compare(){
Scanner inputScanner = new Scanner(System.in);// сканирование буквы введенной пользователем
String latter = inputScanner.nextLine();
int index = movieString.indexOf(latter);
char Symbol = movieString.charAt(index);
String movieStringRight = movieString.replaceAll("[a-zA-Z]", "*"); // Меняет все на *, а надо все кроме Symbol
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2019, 13:41
Ответы с готовыми решениями:

Исключение в regex php
У меня есть такое регулярное выражение: <(img)(+?)(>(.*?)<\/\\1>|?>) Оно выбирает все теги <img> из текста. Но мне нужно...

Regex, исключение подстроки
Добрый день! Помогите составить регулярку, пожалуйста. Есть у меня теги: <td><a href="sample.ru"><img...

[C++11] regex constructor исключение
Конструктор регекса выдает какое-то исключение(перехватываю catch(...)), где можно почитать какие они вообще бывают и из-за чего? Заранее...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.04.2019, 13:45
Java
1
 String movieStringRight = "abc".replaceAll("[a-zA-Z&&[^c]]", "*");
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 29
03.04.2019, 14:15  [ТС]
xoraxax, Но это исключение конкретной буквы, а как поставить туда переменну (которая будет менятся в зависимости от ввода пользователя) ?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.04.2019, 14:25
"string"+peremennaya+"anotherstring"
1
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 16:14
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Task033 {
    public static void main(String[] args) {
        String offer = "blablablabla";
        Scanner read = new Scanner(System.in);
        System.out.print("Input symbol: ");
        char symbol = read.nextLine().trim().charAt(0);
 
        System.out.println("Offer: " + offer);
        String pattern =  String.format("[a-zA-Z&&[^%s]]", String.valueOf(symbol));
        offer = offer.replaceAll(pattern, "*");
        System.out.println("After: " + offer);
    }
}
Добавлено через 28 секунд
Output:

Java
1
2
3
4
5
Input symbol: b
Offer: blablablabla
After: b**b**b**b**
 
Process finished with exit code 0
1
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 29
05.04.2019, 11:31  [ТС]
xoraxax, ArtemFM, Спасибо за ответы. Может подскажете еще один нюанс) Как доработать программу чтобы она сохраняла уже угаданные символы ?

Cейчас Outpoot выглядит так :

Start the Movie Game
You have 10 attempts
Use only latin letters
It's your movie:**** ****
Give me a latter:
a
**a* *a**
Give me a latter:

И при новом вводе забывает уже угаданную букву, а как сделать чтобы к уже угаданной добавлялась новая ?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public String compare(){
        System.out.println("Give me a latter:");
        Scanner inputScanner = new Scanner(System.in);// сканирование буквы введенной пользователем
        String latter = inputScanner.nextLine();
        String resultMovieStringRight;
        try {
            int index = movieString.indexOf(latter);
            char Symbol = movieString.charAt(index);
            String movieStringRight = movieString.format("[a-zA-Z&&[^%s]]", String.valueOf(Symbol));
            resultMovieStringRight = movieString.replaceAll(movieStringRight, "*");
            System.out.println(resultMovieStringRight);
            return resultMovieStringRight;
        }
        catch(Exception e){
            System.out.println("This letter is not here");
            return null;
        }
    }
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
05.04.2019, 11:43
Лучший ответ Сообщение было отмечено Dnepranin как решение

Решение

тут мы прячем всю строку в звёздочки, кроме Symbol
но по сути мы можем передать туда не символ а строку
Java
1
String movieStringRight = movieString.format("[a-zA-Z&&[^%s]]", String.valueOf(Symbol));
складываем строку из прошлых данных
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public String compare(){
        System.out.print("Give me a latter: ");
        Scanner inputScanner = new Scanner(System.in);
        String latter = inputScanner.nextLine().trim();
        String resultMovieStringRight;
        try {
            int index = movieString.indexOf(latter);
            pastSymbols += movieString.charAt(index);
            String movieStringRight = movieString.format("[a-zA-Z&&[^%s]]", pastSymbols);
            resultMovieStringRight = movieString.replaceAll(movieStringRight, "*");
            System.out.println(resultMovieStringRight);
            return resultMovieStringRight;
        }
        catch(Exception e){
            System.out.println("This letter is not here");
            return null;
        }
    }
а вот это вынеси из метода в поле класса, как и movieString
Java
1
String pastSymbols = "";
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2019, 11:43
Помогаю со студенческими работами здесь

Необработанное исключение Boost::Regex
Только начал изучение буста - решил начать с регулярных выражений, т.к. они в данный момент требуются. Всё собрал, установил, во время...

ReplaceAll и toUpperCase
в строке нужно заменить все подстроки , которые состоят из нижнего подчеркивания и символа ,за ним следующего,на этот символ,только в...

Метод replaceAll()
Пишу следующую строчку: str = str.replaceAll("(})\\s(class|interface)", "(\\1)myseparator(\\2)"); В результате в найденные места...

Замена цифр replaceAll
Здравствуйте, нужна Ваша помощь)) Дан текст: "Хлеб стоит 1 доллар, велосипед 100 долларов, булка 2 доллара." Нужно получить...

Регулярные выражения в replaceAll
Сумма 8 239-00 тенге в т.ч. НДС(12%) 21321321321320-00 тенге В данной строке мне нужно парсить все то что лежит между НДС(12%) и тенге ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru