Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ескейп последловательность для + / 10 сообщений из 10, страница 1 из 1
11.03.2007, 03:27:21
    #34382438
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Здравствуйте. Есть строка в которой в качестве разделителей используются знаки плюса.
Я пытаюсь разбить сторку по этим разделителям при помощи сплита, но мне выскакивает егзепшен регекспа перепробовал уже все но не помогает :(
Подскажите пожалуйста как можно экранировать этот плюс.
Всем спасибо.
...
Рейтинг: 0 / 0
11.03.2007, 10:06:09
    #34382482
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
"\\+"
...
Рейтинг: 0 / 0
11.03.2007, 11:16:14
    #34382522
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Если уж захотел писать по-английски, то надо было "искейп последовательность" или ещё более по-английски "искейп ссиквинстельность". Если "+" получается в результате URL кодирования, то применить URL декодирование. Иначе надо подобрать правильное регулярное выражение (ну, "регексп"). Думаю, подойдёт "[+]", хотя самому проверить лень.
...
Рейтинг: 0 / 0
11.03.2007, 12:47:49
    #34382576
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Partisan MДумаю, подойдёт "[+]", хотя самому проверить лень.
Подошло :))
Всем спасибо.
...
Рейтинг: 0 / 0
11.03.2007, 12:53:52
    #34382582
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
mayton"\\+"
Похоже выражение - утро вечера мудренее работает :) "\\+" тоже подходит, хотя точно помню что всера делал так и не получалось
...
Рейтинг: 0 / 0
11.03.2007, 13:31:37
    #34382625
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
"\\+" это запись в Java регулярного выражения "\+" в котором \ служит чтобы показать, что + надо использовать как обыкновенный символ, а не как специальный символ регулярного выражения. Специальный символ + означает "один или более элементов, находящихся перед ним".
"[+]" это регуляное выражение, означающее выбор одного из символов, находящихся в квадратных скобках. В данном случае \ не обязателен по синтакису. Однако если б мы захотели усложнить регулярное выражение, то мог бы понадобиться и там. Например, хотим, чтобы разделителем был + или пробел. Пишем: "[+\s]". А если хотим, чтоб произвольное число + и пробелов, то получается например "[+\s]+". Кратко синтаксис регулярных выражений описан в документации по JDK, см. java.util.Regex (следует туда заглянуть потому что такие простые регулярные выражения там обозрены), подробнее в книжках (можно найти в интернете).
...
Рейтинг: 0 / 0
11.03.2007, 14:42:22
    #34382705
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Partisan MКратко синтаксис регулярных выражений описан в документации по JDK, см. java.util.Regex (следует туда заглянуть потому что такие простые регулярные выражения там обозрены), подробнее в книжках (можно найти в интернете).
читал :) для экранирования спецсимволов там предлагают использовать \сСпецсимвол, но данная конструкция не работает почемуто, а \\ опсан как экранирование обратного слеша :) хотя может я чего-то не допонял
...
Рейтинг: 0 / 0
11.03.2007, 14:53:29
    #34382714
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Регулярные выражения придуманы не специально для Java. Поэтому если в регулярном выражении тербуется \+ то \ отностится к синтаксису регулярного выражения, а не строки Java. А в строке Java требуется заменять \ на \\, и неважно, изображает ли эта строка регулярное выражение или нет. Поэтому получаем Java строку "\\+" которая изображает собой регулярное выражение \+
...
Рейтинг: 0 / 0
11.03.2007, 15:04:22
    #34382726
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
Partisan MРегулярные выражения придуманы не специально для Java. Поэтому если в регулярном выражении тербуется \+ то \ отностится к синтаксису регулярного выражения, а не строки Java. А в строке Java требуется заменять \ на \\, и неважно, изображает ли эта строка регулярное выражение или нет. Поэтому получаем Java строку "\\+" которая изображает собой регулярное выражение \+
Понял, если в регулярном выражении нужно написать "a\+\." то в яве это будет выглядеть как "a\\+\\." Так?
...
Рейтинг: 0 / 0
11.03.2007, 18:04:58
    #34382865
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ескейп последловательность для +
да.
А если бы понадобилось написать \ как простой символ, например, надо было разбить строку не по + а по \.
Тогда в регулярном выражении вместо \ пишем \\, а преобразуя это в строку Java получаем "\\\\".
Поскольку в регулярном выражении легко сделать ошибку, то я обычно делаю простую тестовую программу, чтоб смотреть, что получается.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ескейп последловательность для + / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]