字符串.replaceAll()从Sqlite数据库获取数据时的意外行为

时间:2011-11-25 12:22:35

标签: java android string sqlite replace

我想知道这种行为。在我的应用程序中,我从服务器或我自己创建的数据库中获取数据。 (我克隆服务器数据库)

.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/>" ) 

有调试图片。 enter image description here

3 个答案:

答案 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"), "
"));