更换网址中的宽度和高度

时间:2017-01-15 22:31:39

标签: java string substring indexof

更改w = number和h = number的最简单方法是什么?

网址示例:

https://test.com/photos/226109/test-photo-226109.jpeg?w= 1260 &安培; H = 750 &安培;汽车=压缩&安培; CS = tinysrgb&安培;配合=作物

我必须动态更改粗体部分。

我可以像这样提取w的值:

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

但我怎么能改变呢? 我试过搜索Stackoverflow,但找不到任何东西。

感谢。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您正尝试在=h的{​​{1}}符号之后替换值。

您可以使用RegEx执行此操作,如下所示:

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") 匹配的模式,然后用w=AnyNumberHere替换整个部分。同样,我们将w=NEW_VALUE替换为&h=AnyNumberHere

此解决方案不依赖于长度,因此如果URL具有可变长度,这仍然有效,并且如果例如值&h=NEW_VALUEh=123不存在,则甚至可以工作;)

答案 1 :(得分: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");

答案 2 :(得分:-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();