2017-01-15 3 views
0

Каков самый простой способ изменения w = number и h = number?Замена ширины и высоты в url

Пример URL:

https://test.com/photos/226109/test-photo-226109.jpeg?w= & ч = & авто = сжимает & CS = tinysrgb & подгонки = урожай

Я должен динамически изменять полужирную часть.

я могу извлечь значение ш так:

s = s.substring(s.indexOf("=") + 1, s.indexOf("&")); 

Но как я могу изменить его? Я попытался найти Stackoverflow, но ничего не нашел.

Спасибо.

ответ

2

Если я правильно понял вы пытаетесь заменить значения после = знака h и w.

Вы можете просто сделать с помощью регулярных выражений следующим образом:

"https://test.com/photos/226109/test-photo-226109.jpeg?w=1260&h=750&auto=compress&cs=tinysrgb&fit=crop" 
         .replaceAll("w=\\d+", "w=NEW_VALUE").replaceAll("&h=\\d+", "&h=NEW_VALUE") 

Что происходит выше, что мы сначала найти Patern, который соответствует w=AnyNumberHere и заменить весь раздел с w=NEW_VALUE. Точно так же мы заменим &h=AnyNumberHere с &h=NEW_VALUE

Это решение не длина зависит, поэтому, если URL имеет переменную длину это будет по-прежнему работать, и будет работать даже если значение h=123 или w=1234, например, не существует;)

+0

Спасибо. Только то, что я искал! – dinomuharemagic

+0

@core_m Рад, что я помог! : D. В качестве продолжения я не знал, какая длина номера будет после знака =, поэтому я не мог этого контролировать. если вы знаете длину, например, если она длится от 1 до 10 символов), мы можем ее ограничить! –

1

В вашем случае вы можете использовать метод String replaceAll. Пример использования:

String string = 
    "https://test.com/photos/226109/test-photo-226109." + 
     "jpeg?w=1260&h=750&auto=compress&cs=tinysrgb&fit=crop"; 
String replacedString = string 
    .replaceAll(string.substring(string.indexOf("=") + 1, 
     string.indexOf("&")), "1000"); 
-1

Когда вы получаете номера из строки, вы можете преобразовать их в StringBuffer. Как это

String s = new String("https://test.com/photos/226109/test-photo-226109.jpeg?w=1260&h=750&auto=compress&cs=tinysrgb&fit=crop"); 
StringBuffer sb = new StringBuffer(s); 
sb.replace(s.indexOf("w=") + 2, s.indexOf("&"), "2000"); 
sb.replace(s.indexOf("h=") + 2, s.indexOf("&"), "2000"); 
s = sb.toString(); 
+0

Если URL-адрес имеет переменную длину, тогда это не удастся, оно заменит неправильный раздел URL-адреса, таким образом, развращая его. –

+0

i означает 12 и 15 - значения s.indexOf ("=") + 1 – valikFilatov

+0

Пока ваш код подвержен ошибкам. Например, если URL-адрес не содержит '=', он будет ошибочным, также заменяя первый знак '=' до тех пор, пока следующий знак '=' не повредит URL: S В приведенном выше примере он будет выглядеть примерно так: 'https: //test.com/photos/226109/test-photo-226109.jpeg? w = 2000750 & auto = compress & cs = tinysrgb & fit = crop', который удаляет часть' & h = 'и объединяет значение после него с 2000, которое является значение замены: S –

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