我需要替换一个字符串:
"abc.T.T.AT.T"
到一个字符串,其中所有单T
将被TOT
替换为
"abc.TOT.TOT.AT.TOT"
strings.replaceAll
没有为此工作。
答案 0 :(得分:8)
s.replaceAll("(?<=\\.|^)T(?=\\.|$)", "TOT");
如果你这样做:
String s = "T.T.T.AT.T.fT.T.T";
System.out.println(s.replaceAll("(?<=\\.|^)T(?=\\.|$)", "TOT"));
输出将是:
TOT.TOT.TOT.AT.TOT.fT.TOT.TOT
答案 1 :(得分:3)
您可以使用word boundaries执行此任务:
text.replaceAll("\\bT\\b", "TOT");
只有当前面没有“T”时才会替换“T”,而后面或前面没有其他字母或数字。
这适用于您的示例。但是你应该知道,这将匹配所有“T”与非单词字符。取而代之的是,例如:
但不是“T”:
答案 2 :(得分:1)
String input = "abc.T.T.AT.T";
StringTokenizer st = new StringTokenizer(input,".");
StringBuffer sb = new StringBuffer();
while(st.hasMoreTokens()){
String token = st.nextToken();
if(token.equals("T")){
token= token.replace("T", "TOT");
}
sb.append(token+".");
}
if(!(input.lastIndexOf(".")==input.length()-1))
sb.deleteCharAt(sb.lastIndexOf("."));
System.out.println(sb.toString());
希望这是你所需要的......