更改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,但找不到任何东西。
感谢。
答案 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_VALUE
或h=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();