Java 替换前两次出现的'&';查尔斯
如何仅替换第一个Java 替换前两次出现的'&';查尔斯,java,regex,string,replace,Java,Regex,String,Replace,如何仅替换第一个&和下一个&之间的字符串: 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.pr
&
和下一个&
之间的字符串:
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=2gb4gb&asd=sdsd&
我的输出-&axy=asdsd&ram=8gb&
但是我想要-&axy=asdsd&ram=8gb&asd=sdsd&
只想换中间部分
我正在做一个搜索过滤器。如果存在任何用于构建查询的API,我很想知道。您可以对字符串使用
split
方法将其拆分为具有给定分隔符的标记。然后用新的期望值替换您想要的任何索引
类似这样的东西(未测试)
谢谢波波
这起作用了…?'而不是“.”
公共类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&您需要使用一个求反字符类
[^&]
来匹配除&
之外的任何字符和一个*
量词(零次或多次出现),并利用字符串#replaceFirst()
方法仅执行一次替换:
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);
}
}
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&
请参见尝试改用*使用。利用
replaceFirst
仅执行一个S&R操作。replaceAll
将在其他字符串中匹配并替换比您需要的更多的字符串,其中包含更多的&
。
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&