关于Java字符串中拼接换行符

6 篇文章 0 订阅

引言

今天在写代码的时候发现一个问题,用普通打印/n会进行回车,但是从数据库中获取的值/n不会进行变换

问题如下

        System.out.println("大爷!你好大爷\n,咱这是到哪去啊?");
        // 从数据库获取的值(跟数据库存储的内容是一模一样的)
        System.out.println(parameterValue + "到二仙桥");

输出:

大爷!你好大爷
,咱这是到哪去啊?
巡查地点: {NAME}\n任务状态: {STATUS}\n原因: {REASON}到二仙桥

可以看见字符串中命名有\n但是却没有换行

问题应该是出在了从数据库取值的时候进行了特殊字符的转换

数据库中虽然也是\n但是为了能与数据库保持一致将\替换成了\
也就是说parameterValue的真实值应该是

        System.out.println("巡查地点: {NAME}\\n任务状态: {STATUS}\\n原因: {REASON}" + "那你该走哪条道呢?");

输出:

巡查地点: {NAME}\n任务状态: {STATUS}\n原因: {REASON}

所以我们应该让真实值变成\n才能真正实现换行
既然在数据库中的\会自动变为\
也就是说你不论在数据库怎么改多少个\最终输出的最终值都是2*\数量

所以有两种方案可以解决

  1. 修改数据库中的\n为Mysql的换行符
例子:
`UPDATE tablename SET  FIELD = REPLACE(REPLACE(FIELD, CHAR(10), ''), CHAR(13), '');

CHAR(10):  换行符

CHAR(13):  回车符`
  1. 首先先将数据库里的\n全部替换成 ';'或其他字符,然后做如下替换
System.out.println(parameterValue.replaceAll(";","\\\n") + "走成华大道");
        System.out.println("不是"+"我是说"+"该走哪条道?");
        System.out.println("走成华大道!");
        System.out.println("你这车能拉吗?");
        System.out.println("只能拉一点点");
        System.out.println("我是问你这车能不能拉?");
        System.out.println("能拉!只能拉一点点");
        System.out.println(".....");

输出:

任务类型: {TYPE}
任务名称: {NAME}
任务状态: {STATUS}走成华大道
不是我是说该走哪条道?
走成华大道!
你这车能拉吗?
只能拉一点点
我是问你这车能不能拉?
能拉!只能拉一点点
.....
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值