从数据库列中检索时,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有一个方法:
所以你只需要打电话
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的字符串
这应该是一个新的界限,但事实并非如此。 //现在好了..
- spring form taglib disabled属性是否必须解析为字符串?
- 在现有的webapp中集成BIRT
- Java:多维数组与一维数组
- 使用ant / ivy从nexus中检索依赖关系之间的http身份validation?
- 除了jmap之外还有一个命令行方法来获取jvm堆转储吗?
- Swing UI的unit testing框架
- StringBuilder与.concat对比“+”运算符相对性能在eclipse中与命令行不同?
- 自定义Jackson HttpMessageConverter不再适用于Spring 4.2
- 获取org.hibernate.MappingException:没有JDBC类型的Dialect映射:-4exception?