引言
今天在写代码的时候发现一个问题,用普通打印/n会进行回车,但是从数据库中获取的值/n不会进行变换
问题如下
("大爷!你好大爷\n,咱这是到哪去啊?");
// 从数据库获取的值(跟数据库存储的内容是一模一样的)
(parameterValue + "到二仙桥");
输出:
大爷!你好大爷
,咱这是到哪去啊?
巡查地点: {NAME}\n任务状态: {STATUS}\n原因: {REASON}到二仙桥
可以看见字符串中命名有\n但是却没有换行
问题应该是出在了从数据库取值的时候进行了特殊字符的转换
数据库中虽然也是\n但是为了能与数据库保持一致将\替换成了\
也就是说parameterValue的真实值
应该是
("巡查地点: {NAME}\\n任务状态: {STATUS}\\n原因: {REASON}" + "那你该走哪条道呢?");
输出:
巡查地点: {NAME}\n任务状态: {STATUS}\n原因: {REASON}
所以我们应该让真实值
变成\n才能真正实现换行
既然在数据库中的\会自动变为\
也就是说你不论在数据库怎么改多少个\最终输出的最终值都是2*\数量
所以有两种方案可以解决
- 修改数据库中的\n为Mysql的换行符
例子:
`UPDATE tablename SET FIELD = REPLACE(REPLACE(FIELD, CHAR(10), ''), CHAR(13), '');
CHAR(10): 换行符
CHAR(13): 回车符`
- 首先先将数据库里的\n全部替换成 ';'或其他字符,然后做如下替换
((";","\\\n") + "走成华大道");
("不是"+"我是说"+"该走哪条道?");
("走成华大道!");
("你这车能拉吗?");
("只能拉一点点");
("我是问你这车能不能拉?");
("能拉!只能拉一点点");
(".....");
输出:
任务类型: {TYPE}
任务名称: {NAME}
任务状态: {STATUS}走成华大道
不是我是说该走哪条道?
走成华大道!
你这车能拉吗?
只能拉一点点
我是问你这车能不能拉?
能拉!只能拉一点点
.....