2013-07-09 2 views
2

У меня в настоящее время некоторые URL, как это:Заменить шаблон проектирования в строке запроса

?param=value&offset=19&size=100 

Или так:

?offset=45&size=50&param=lol 

И я хотел бы удалить для каждого случая «зачетной» и "стоимость". Я использую метод regex, но я не понимаю, как он работает ... Можете ли вы мне помочь? Я также хочу получить оба значения смещения и размер.

Вот моя работа ...

\(?|&)offset=([0-9])[*]&size=([0-9])[*]\ 

Но это не работает на всех!

Спасибо.

ответ

2

Предполагая, что является Javascript & вы только хотите, чтобы удалить смещение параметров:

str.replace(\offset=[0-9]*&?\,"") 

Для Java:

str=str.replaceAll("offset=[0-9]*&?",""); 
//to remove & and ? at the end in some cases 
if (str.endsWith("?") || str.endsWith("&")) 
    str=str.substring(0,str.length()-1); 
+0

Я использую java se на самом деле. Это то же самое или нет? – christophedebatz

1

Без регулярного выражения.

String queryString ="param=value&offset=19&size=100"; 
    String[] splitters = queryString.split("&"); 
    for (String str : splitters) { 
     if (str.startsWith("offset")) { 
      String offset = str.substring(str.indexOf('=') + 1);//like wise size also 
      System.out.println(offset); //prints 19 
     } 
    } 
1

Если вам нужно использовать регулярное выражение для этого попробуйте эту строку в java для регулярного выражения (заменить на ничего):

"(?>(?<=\\?)|&)(?>value|offset)=.*?(?>(?=&)|$)" 

Он удалит любой параметр в вашем URL-адресе, который имеет имя «смещение» или «значение». Он также сохранит все необходимые маркеры параметров для других параметров в URL-адресе.

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