![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
Мне надо правильно считать строку "????", т.к. ? - является регулярным выражением то выскакивает ошибка
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ???? ^ at java.util.regex.Pattern.error(Pattern.java:1528) at java.util.regex.Pattern.sequence(Pattern.java:1645) at java.util.regex.Pattern.expr(Pattern.java:1545) at java.util.regex.Pattern.compile(Pattern.java:1279) at java.util.regex.Pattern.<init>(Pattern.java:1035) at java.util.regex.Pattern.compile(Pattern.java:779) и т.д. может есть какой то способ? |
|||
|
||||
glukochillo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.3.2006 Репутация: 1 Всего: 1 |
попробуй перед считыванием произвести замену: "?" -> другой символ
|
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
а как эту замену сделать то?
пробовал так: if(String.indexOf("?") != -1) String = String.replaceAll("?","\\?"); но indexOf уже "?" воспринимает как ошибку, т.е. учитывает регулярные выражения. плюс конечно все таки желательно как то обойтись без замены. Это сообщение отредактировал(а) Den1s - 24.3.2006, 13:18 |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Экранируй его:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
ну "*" это ведь тоже регулярное выражение...и если звездочки будут в поле ввода, то выскочит следующая ошибка
Dangling meta character '*' near index 0 **** at java.util.regex.Pattern.error(Pattern.java:1528) at java.util.regex.Pattern.sequence(Pattern.java:1645) at java.util.regex.Pattern.expr(Pattern.java:1545) at java.util.regex.Pattern.compile(Pattern.java:1279) at java.util.regex.Pattern.<init>(Pattern.java:1035) at java.util.regex.Pattern.compile(Pattern.java:802) т.е. тут вопрос в том как мне строку "????" принять как "//?//?//?//?" , при том что функции изначально регулярные выражения как exeption воспринимают ![]() Это сообщение отредактировал(а) Den1s - 24.3.2006, 14:41 |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Любой метасимвол можно экранировать с помощью \\.
Если тебе надо искать текст из строки ввода, и не охота заморачиваться с экранированием. Ищи текст так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
нет, у меня ситуация такая....
Пользователь в поле ввода вводит строку в jsp странице, моя функция в файле java эту строку получает, когда пользователь вводит нормальные данные все нормально, но ему захотелось указать что это будет любое слово из 4 букв и он вводит соответственно "????" закрывает окно и в этот момент моя функция получает эти данные, так как первый идет "?"то соотвественно у меня в Eclipse в консоли выскакивает следующие предупреждение java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ???? ^ at java.util.regex.Pattern.error(Pattern.java:1528) at java.util.regex.Pattern.sequence(Pattern.java:1645) at java.util.regex.Pattern.expr(Pattern.java:1545) at java.util.regex.Pattern.compile(Pattern.java:1279) at java.util.regex.Pattern.<init>(Pattern.java:1035) at java.util.regex.Pattern.compile(Pattern.java:779) программа как бы работает дальше но эту функцию выполняет неправильно.... и вот мне хотелось бы именно узнать как мне эти полученные "????" преобразовать в моей функции в "\\?\\?\\?\\?"... |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
glukochillo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.3.2006 Репутация: 1 Всего: 1 |
Еще один вариант:
|
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
спасибо...это то все понятно...но дело в том что у меня почему то на этих вопросах ошибка срабатывает, он как только считывает что первый вопрос....может не там делаю замену...
![]() |
|||
|
||||
Beard |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 2 Всего: 9 |
Можно на метод посмотреть, в котором появляется ошибка?
|
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
ну вот у меня допустим String поступает, я делаю
if(String.indexOf("?") != -1) String = String.replaceAll("?","\\?"); и после условия у меня эта ошибка и вылетает.... дело в том что судя по всему indexOf и вызывает этот exception ![]() Это сообщение отредактировал(а) Den1s - 24.3.2006, 17:20 |
|||
|
||||
glukochillo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.3.2006 Репутация: 1 Всего: 1 |
неа, ошибку вызывает replaceAll, так что ищи альтернативу этому методу
Это сообщение отредактировал(а) glukochillo - 24.3.2006, 17:24 |
|||
|
||||
Beard |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 2 Всего: 9 |
IndexOf не может вызвать этот эксепшн - это replaceAll, это уже выяснили и предложили как заменить.
Чем способ, предложенный LSD не нравится? |
|||
|
||||
Den1s |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
спасибо, действительно это метод replaceAll этот exception вызывает....странно....
способ предложенный LSD работает, но он более громоздкий.... так а почему же replaceAll так странно ведет себя в этой ситуации? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |