我使用java replaceAll()
方法来转义换行符
String comment = "ddnfa \n \r \tdnfadsf ' \r t ";
comment = comment.replaceAll("(\\n|\\r|\\t)","\\\\$1");
System.out.println(comment);
但上面的代码仍在插入新行。
有没有办法输出完全相同的评论(即使用\n
和\r
而不是插入新行?)
更新:
我最终使用了:
comment = comment.replaceAll("\\n","\\\\n")
.replaceAll("\\r","\\\\r")
.replaceAll("\\t","\\\\t");
答案 0 :(得分:4)
你必须逐个进行,因为新行字符U + 000A与双字符转义序列\n
无关:
comment = comment.replaceAll("\n","\\\\n");
comment = comment.replaceAll("\r","\\\\r");
comment = comment.replaceAll("\t","\\\\t");
答案 1 :(得分:1)
你必须逐字逐句地做到这一点:
comment = comment.replaceAll("\n","\\\\n");
comment = comment.replaceAll("\r","\\\\r");
comment = comment.replaceAll("\t","\\\\t");
另一种解决方案是使用此函数将String转义为Java String:
comment = org.apache.commons.lang.StringEscapeUtils.escapeJava(comment);
这将使String看起来与Java代码中的String完全相同,但它也会显示其他转义序列(如\\
,\"
等)。
但也许这正是你想要的
答案 2 :(得分:1)
String comment = "ddnfa \n \r \tdnfadsf ' \r t ";
Map<String,String> sub = new HashMap<String,String>();
sub.put("\n", "\\\\n");
sub.put("\r", "\\\\r");
sub.put("\t", "\\\\t");
StringBuffer result = new StringBuffer();
Pattern regex = Pattern.compile("\\n|\\r|\\t");
Matcher matcher = regex.matcher(comment);
while (matcher.find()) {
matcher.appendReplacement(result, sub.get(matcher.group()));
}
matcher.appendTail(result);
System.out.println(result.toString());
打印
ddnfa \n \r \tdnfadsf ' \r
答案 3 :(得分:1)
为什么你不使用$config['sess_driver'] = 'database'; // select database driver
$config['sess_save_path'] = 'ci_sessions'; // name of the mysql table
?
答案 4 :(得分:0)
试试这个..
comment.replaceAll("(\n)|(\r)|(\t)", "\n");
答案 5 :(得分:0)
这是\
问题,简化如下:
comment = comment.replaceAll("(\n|\r|\t)", "");
输出:
ddnfa dnfadsf ' t