2014-01-02 3 views
0

Мне нужно заменить https://9S&Re на https://9S#Re, чтобы я мог избежать раздельной логики. Моя цель - получить ключ как «user_image» и значение как "https://9S&Re". Но когда я использую split с '&', это дает мне неправильные результаты. Поэтому я пытаюсь создать шаблон регулярного выражения, который будет проверять между & * &, если нет равных между ними означает, что в одном из значений запроса есть символ амперсанда. Любая помощь действительно ценится.Регулярное выражение для замены амперсанда специальным символом

import java.nio.charset.Charset; 
    import java.util.HashMap; 
    import java.util.List; 

    import org.apache.http.NameValuePair; 
    import org.apache.http.client.utils.URLEncodedUtils; 

    public class OAuthTest { 

     public static void main(String[] args) { 
      try { 
       //HashMap paramHashMap=new HashMap();   
       List<NameValuePair> args2= URLEncodedUtils.parse("tool=canvas&tool_guid=8314&user_image=https://9S&Re&launch_presentation_document_target=iframe", Charset.forName("UTF-8")); 
       for (NameValuePair arg:args2) 
        System.out.println(arg.getName()+"="+arg.getValue().replaceAll("#","&")); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 

ответ

1

В цикле for вы пытаетесь заменить & на #? Ваши аргументы переключаются.