如何仅在第一个&
和下一个&
之间替换字符串:
public class Test02 {
public static void main(String[] args) {
String xyz = "&axy=asdsd&ram=2 gb4 gb&asd=sdsd&";
String x = xyz.replaceAll("&ram=.*&", "&ram=8 gb&");
System.out.println(x);
}
}
我的输入 - &axy=asdsd&ram=2 gb4 gb&asd=sdsd&
我的输出 - &axy=asdsd&ram=8 gb&
但我想 - &axy=asdsd&ram=8 gb&asd=sdsd&
只想改变中间部分。
我正在制作搜索过滤器。如果存在用于构建查询的任何API,我很乐意知道。
答案 0 :(得分:1)
谢谢你,
这有效......'。?'而不是'。'..
公共类Test02 {
public static void main(String[] args) {
String xyz = "&axy=asdsd&ram=2 gb4 gb&asd=sdsd&";
String x = xyz.replaceAll("(&ram=.*?)&", "&ram=8 gb&");
System.out.println(x);
}
}
现在输出 - & axy = asdsd& ram = 8 gb& asd = sdsd&
答案 1 :(得分:0)
您可以在String上使用split
方法将其分解为具有给定分隔符的标记。然后用新的期望值替换你想要的任何索引。
像这样(未经测试)
String text = "A&B&C";
String delim = "&";
String[] elements = text.split(delim);
elements[0]= "D";
String result = "";
for (String token : elements) {
result += token + delim;
}
System.out.println(result.substring(0, result.length() - delim.length())); // "D&B&C"
答案 2 :(得分:0)
public static void main(String[] args) {
String xyz = "&axy=asdsd&ram=2 gb4 gb&asd=sdsd&";
int firstAndPosition =xyz.indexOf('&',1);
int secondAndPosition =xyz.indexOf('&',firstAndPosition+1);
String stringToReplace = xyz.substring(firstAndPosition, secondAndPosition +1);
//The do your stuff
String x = xyz.replaceAll(stringToReplace, "&ram=8 gb&");
System.out.println(x);
}
}
答案 3 :(得分:0)
您需要使用与任何字符匹配的否定字符类[^&]
,但&
与*
量词(零次或多次出现)匹配,并仅使用String#replaceFirst()
方法执行一次更换:
String xyz = "&axy=asdsd&ram=2 gb4 gb&asd=sdsd&";
String x = xyz.replaceFirst("&ram=[^&]*&", "&ram=8 gb&");
System.out.println(x);
// => &axy=asdsd&ram=8 gb&asd=sdsd&
请参阅IDEONE demo