我想知道这种行为。在我的应用程序中,我从服务器或我自己创建的数据库中获取数据。 (我克隆服务器数据库)
.replaceAll ( "\r\n" , "<br/>" ) ;
当数据来自它替换的服务器时。但是当从sqlite数据库获取数据时,它无法替换上面的内容。正如我尝试.replaceAll ( "a" , "??" ) ;
及其工作一样。
数据库数据
布拉德利·安布罗斯是自由摄影师,他录制了John Key和John Banks的茶会。\ r \ n \ r \ n他故意在桌子上放置一个带有录音设备的黑色包,Key和Banks坐在桌子上,尽管他声称这是一个错误,如果那是真的那么这么多人怎么得到它的副本??? \ r \ n \ r \ n这个家伙血腥改变了他的名字从布拉德怀特什么到底这个人到底是一个国际人神秘之类的东西。
我还详细调试了这个问题。但即使代码成功执行上述行也不会被替换。 我也试过
replaceAll ( "\n" , "<br/>" )
replaceAll ( "\r" , "<br/>" )
有调试图片。
答案 0 :(得分:3)
输入字符串是否包含实际的CR和LF字符或\和r和\和n?
对正则表达式在后一种情况下不起作用。这需要.replaceAll("\\\\r\\\\n" , "<br/>")
答案 1 :(得分:1)
代码很好。您在调试屏幕中看到的数据是错误的。执行相同的调试会话并插入system.out.println并在调试屏幕中检查输出和输出。
除非你的意思是数据库实际上有字符串“\ r \ n”。以上假设数据库实际上包含carrige返回和换行符。如果你的数据库实际上有反斜杠字符后跟'n'字符,那么你的正则表达式需要一个简单的调整。 s.replaceAll(“\\\\ r \\\\ n”,“
”)</ p>
答案 2 :(得分:1)
你可以试试Pattern#quote()吗?
类似的东西:
System.out.println("hello\r\n\r\n something".replaceAll(Pattern.quote("\r\n"), "
"));