我有一个要求,我需要在给定的字符串变量中插入一个转义序列,在出现单引号(')的地方.我尝试使用split方法和StringTokenizer,但没有一个对我有用.所以我开发了下面提到的逻辑.它在一些场景中也失败了
任何人都可以为我提供最简单的方法来实现这样的要求.
public static String quotesMessage(String message){
String newMessage="";
while(message.length()>0){
if(message.indexOf("'")==0){
if(!StringUtils.isEmpty(message.substring(0))){
message = message.substring(1);
}
}else{
if(message.indexOf("'")!= -1){
newMessage=newMessage+message.substring(0,message.indexOf("'"))+"\\'";
message=message.substring(message.indexOf("'"));
}else{
newMessage=newMessage+message;
message="";
}
}
}
return newMessage;
}
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
newMessage.replace("'", "\\'")
Run Code Online (Sandbox Code Playgroud)
或者我是否误解了你的要求?
而有关意见的讨论:是的,都replace()和replaceAll() 使用正则表达式内部使用编译模式(但replace()使用标志Pattern.LITERAL),解释的图案文字值,而replaceAll()(和replaceFirst())都使用正则表达式.但是,编译的模式完全相同(在这种情况下).亲自尝试一下:
Pattern literal = Pattern.compile("'",Pattern.LITERAL);
Pattern regular = Pattern.compile("'");
Run Code Online (Sandbox Code Playgroud)
在这些分配之后添加断点,并仔细查看这两个编译模式.您会发现它们的所有字段值都是相同的,因此至少在这种情况下,不会在性能方面产生任何差异.
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |