2017-02-13 4 views
1

Я сжимаю строку с '&'. Для примера:Разбиение строки на пару ключей и значений

password=XXXXXXXXX&username=XXXXXXXXXXX 

Теперь, если предположить, мой пароль содержит «&», то я столкнулся вопрос здесь, что пароль получает trimed на первом наступлении «&».

Пример:

password=disney&123&username=XXXXXXXXXXX 

Так что мой вывод будет следующим:

password=disney 
123 
username=XXXXXXXXXXX 

Но я хочу, чтобы мой выход, как:

password=disney&123 
username=XXXXXXXXXXX 

Пожалуйста, руководство меня, как я новичок в Ява. И я хочу разбить строку, используя '&', и мой пароль может conatin '&' это зависит от пользователей.

Спасибо заранее, Ritesh

+0

'IndexOf ("& имя пользователя"); ' –

+0

, вы должны прочитать их отдельно ... –

+0

Вам необходимо закодировать или удалить специальные символы. См. [Кодировка URL] (https://en.wikipedia.org/wiki/Query_string#URL_encoding). – shmosel

ответ

1
String[] strs="password=disney&123&username=XXXXXXXXXXX".split("&username="); 
strs[1]="username="+strs[1]; 
System.out.println(strs[0]); 
System.out.println(strs[1]); 

-

Edit:

//This is a slightly more generalized method 
String[] strs="username=XXXXXXXXXXX&password=disney&123".split("&(?=(username|password)=)"); 
System.out.println(strs[0]); 
System.out.println(strs[1]); 

-

Edit:

//more generalized method 
String[] strs="username=XXXXXXXXXXX&password=disney&123".split("&(?=([a-zA-Z0-9]+)=)"); 
for(String str : strs) 
    System.out.println(str); 
+0

Но тогда, если строка, которую он получает, отформатирована как «username = XXX $ password = YYY»? Из того, что предлагает OP, похоже, что он также должен быть анализируемым значением. – MikaelF

+0

Пример @MikaelF OP не кодируется url ('password' содержит неэкранированный литерал' & '). Для пользовательского формата нам нужен настраиваемый парсер. Во всяком случае, я добавлю несколько более обобщенный метод. – cshu

+0

Спасибо за помощь. Но это имя пользователя и пароль являются частью запроса в URL-адресе. Длина i.e .. количество параметров, используемых для запроса, может измениться, например, это может быть: –

2

Более простым решением было бы использовать кодировку URL полностью. Здесь вы используете только разделительную систему, но вы также должны использовать кодировку.

Поэтому, когда вы строите строку, закодируйте значения, это заменит какой-либо символ, вы можете использовать complet solution или просто заменить & на значение по вашему выбору (но я бы этого не сделал).

Затем, когда вы разделили строку, содержит только &, используемые для разделения значений, декодировать значения (для воссоздания исходных значений).

Это было бы точно так же, как отправка запроса в WebService, поскольку вы используете тот же шаблон, это выглядит более логичным.

  • кодирования значений
  • Concat значения с &
  • Отправить струнный
  • Разделить Строка с использованием &
  • Расшифруйте значения
+0

Спасибо за ваши предложения и оперативный ответ –

+0

@RiteshKhatri Это более общее решение, если вы не знаете имя параметра, который вы получите. – AxelH

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