从数据库列中检索时,Java不会将“\ n”视为新行

我面临一个奇怪的问题。
我正在做的是我将一些值存储在DB(oracle 11g)中作为varchar2并在java中获取值并使用获取的数据。
现在我将\ n作为DB中的值并使用rs.getString()在java中获取它。 我得到了适当的价值\n

 String newLine=rs.getString("column_value"); 

现在我解析一个HTML页面并将整个页面作为一个字符串。假设该页面有3行,每行描述如下的ssome信息:

 Time: 08 AM - 11 AM Duration : 36 minutes 

现在在代码中我将“持续时间:”传递给一个方法,这将返回“36分钟”。
我使用的逻辑是我得到索引“持续时间:”并读取直到“\ n”遇到。如果我将换行声明为

 String newLine= "\n"; 

但是,如果我从数据库中获取它它不起作用。 我知道我不需要将其存储在数据库中,但我不想对这些项进行硬编码。 所以我必须将它存储在DB中。 任何人都可以帮助我吗?

如果在打印newLine时在输出中得到\n ,则可能必须newLine从DB获得的字符串。 Apache Commons Lang有一个方法:

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.io.Writer,java.lang.String)

所以你只需要打电话

  String newLine = StringEscapeUtils.unescapeJava(rs.getString("column_value")); 

希望这可以帮助

尝试这个

 String newline = System.getProperty("line.separator"); boolean hasNewline = word.contains(newline); 

问题是数据库正在为字符串添加转义字符,因此您最终会使用\\ n而不是\ n。 要解决此问题,您只需将\\ n替换为\ n即可。

 String db_string = new String("This is a string from the db \\n This should be a new line, but is not."); db_string = db_string.replace("\\n", "\n"); 

如果你打印这个你得到:
这是db的字符串
这应该是一个新的界限,但事实并非如此。 //现在好了..