[英]Replace exact string with special characters and not the part of another substring
我正在尝试从类似的字符串中替换子字符串:
Sample string value '[1]T.1.v - Marriage Statement'!C10 and this
替换为'[1]T.1.v - Marriage Statement'!C10
的文本,并加上其他字符串,例如var1
以便该字符串成为Sample string value var1 and this
。 问题是可能存在一些字符串,例如Sample string value '[1]T.1.v - Marriage Statement'!C101 and this
在此替换不起作用。 我正在探索边界正则表达式一词来限制替换:
String sample = "Value can be '[1]T.1.v - Marriage Statement'!C10 and this";
String a = sample.replaceAll("\\b'[1]T.1.v - Marriage Statement'!C10\\b", "var1");
System.out.println(a);
但这似乎并不能完全取代这个词。 我尝试了简单的字符串替换,但是它将替换Sample string value '[1]T.1.v - Marriage Statement'!C101 and this
的子字符串, Sample string value '[1]T.1.v - Marriage Statement'!C101 and this
同时将输出作为Sample string value var11 and this
是一个错误。
有什么建议可以实现吗?
删除前导\\b
然后使用\\Q...\\E
转义序列将输入字符串视为文字:
String a = sample.replaceAll("\\Q" + param +"\\E\\b", "var1");
转义括号和点
'\[1\]T\.1\.v - Marriage Statement'!C10
两件事情:
•将您的replaceAll
\\\\'
更改为\\'
•将replaceAll(...
更改为replace(...
(请参阅文章底部)
它看起来应该像这样:
public static void main(String[]args) {
String sample = "Value can be '[1]T.1.v - Marriage Statement'!C10 and this";
String a = sample.replace("\'[1]T.1.v - Marriage Statement\'!C10", "var1");
System.out.println(a);
}
产生输出:
Value can be var1 and this
如果要替换一堆出现的东西(例如字母A),则使用replaceAll
会更好。如果只是替换一个实例,那么replace
会很好地替换某些东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.