我有一个要求,我需要在给定的字符串变量中插入转义序列,无论是在哪里单引号出现 (')。我尝试使用split方法以及字符串分词器,没有一个适合我。所以我开发了下面提到的逻辑。在某些情况下它也会失败
谁能给我提供一种最简单的方法来实现这样的要求?
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;
}
这个怎么样:
newMessage.replace("'", "\\'")
还是我误解了你的要求?
And about the discussions in comments: yes, both replace()
and replaceAll()
use Regular Expressions use compiled Patterns internally (but replace()
uses the flag Pattern.LITERAL), interpreting the pattern as literal value, whereas replaceAll()
(and replaceFirst()
) both use Regular Expressions. However, the compiled patterns are absolutely identical (in this case). Try it yourself:
Pattern literal = Pattern.compile("'",Pattern.LITERAL);
Pattern regular = Pattern.compile("'");
在这些赋值之后添加一个断点,并仔细查看这两个编译模式。您会发现它们的所有字段值都是相同的,因此至少在这种情况下,不会在性能方面产生任何差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)