2014-09-17 4 views
0

Я делаю программу, которая извлекает все изображения из набора flickr. Я нашел в коде большой строку с каждой ссылкой изображения, проблема заключается в следующей:Замена символов, полученных из javascript

Привязок имеет следующий формат:

https:\/\/c2.staticflickr.com\/4\/3925\/14562233192_3fe2b8fe1b_s.jpg 

, но я не может в удалении символа «\», несмотря на используя escape-последовательность «\».

Моя замена кода заключается в следующем, RET содержит много ссылок, разделенные «\ п»:

ret =ret.replaceAll("\\", ""); 

что в мире я я забыть?

Моя ошибка StackTrace это:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal  error near index 1 
\ 
^ 
at java.util.regex.Pattern.error(Unknown Source) 
at java.util.regex.Pattern.compile(Unknown Source) 
at java.util.regex.Pattern.<init>(Unknown Source) 
at java.util.regex.Pattern.compile(Unknown Source) 
at java.lang.String.replaceAll(Unknown Source) 

ответ

3

использование 4 слэши вместо 2. Как это - ret =ret.replaceAll("\\\\", ""). Вам нужно 1 для java, один для двигателя регулярных выражений и два для его анализа буквально (удаление специального значения).

+2

Вы мгновенно и постоянно являетесь моим любимым человеком в мире – Kaostias

+1

@Kaostias - рад я мог бы помочь: P – TheLostMind

+1

True! Regex используется как вход в 'repeatAll' http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String) , так что этого недостаточно, чтобы избежать его, нужно быть уверенным, что регулярное выражение не будет избегать его слишком ха-ха. Проверьте некоторые полезные функции, такие как «Matcher.quoteReplacement» http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#quoteReplacement(java.lang.String) и 'Pattern .quote' http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String) – unmultimedio

1

\ - специальный символ в регулярных выражениях, который используется для выхода из других специальных символов. Таким образом, чтобы соответствовать \, вам необходимо, чтобы ваше регулярное выражение было \\. Поскольку вам нужно снова избежать обратных косых черт (на этот раз для строки Java), вам нужно позвонить ret =ret.replaceAll("\\\\", "");.

+0

Если вы читаете, это именно то, что я сделал , но спасибо за попытку. – Kaostias

+1

Вау, я определенно сделал опечатку. Исправлено с 4 '' 's. – Sizik

Смежные вопросы