11

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

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

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

Time: 08 AM - 11 AM
Duration : 36 minutes

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

String newLine= "\n";

但是,如果我从数据库中得到它,它就不起作用。我知道我不需要将其存储在数据库中,但我不想对这些项目进行硬编码。所以我必须只将它存储在数据库中。谁能帮我解决这个问题???

4

4 回答 4

12

如果当您打印输出时,您可能必须对从数据库中获得的字符串进行转义newLine\nApache 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"));

希望这可以帮助

于 2013-03-28T10:14:23.177 回答
3

试试这个

String newline = System.getProperty("line.separator");
boolean hasNewline = word.contains(newline);
于 2013-03-28T10:00:48.293 回答
3

问题是数据库正在向您的字符串添加一个转义字符,因此您最终得到的是 \\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 的字符串
这应该是一个新行,但不是。//现在好了..

于 2015-02-09T10:37:09.993 回答
0

如果要将数据检索到 HTML 页面,可以执行以下操作:

String YourString = YourString.replaceAll("\\n", "<br>");

如果您要将数据检索到其他位置,您可以这样做:

String YourString = YourString.replaceAll("\\\\n", "\n");

注意:\\\\n用于\\n转义字符

于 2019-01-31T12:55:55.147 回答