java如何解决解析html的单引号嵌套

这是一篇比较简单文章,主要是用于技术备忘。

 

 

这里解决的主要问题是,后台需要拼接html字符串,在html字符串中会有引号包含单引号的情况,尝试了很久,才知道尝试出结果:

sb.append("data-rules='{selectRequired:[true,'" + "#sl" + bo.getKey() + "']}' ");

因为JAVA中双引号是代表字符串定义,双引号中可以再包含单引号。但是,如果我们如下写法

sb.append("data-rules='{selectRequired:[true,'" + "#sl" + bo.getKey() + "']}' ");

浏览器的解析结果是

data-rules="{selectRequired:[true, " #slalias4']}'

明显不对,我们需要的是data-rules="{selectRequired:[true, '#slalias4']} "。

换个思考的方式,我们是将字符串传递给浏览器,最终浏览器会对html的引号重新解析,所以,我们应该考虑使用html的转义才对。所以,使用'就可以解决问题了。再试探一下这个想法是不是对的,我们修改一下语句如下:

sb.append("data-rules="{selectRequired:[true,'" + "#sl" + bo.getKey() + "']}" ");

啊哈,居然不对

data-rules=""{selectRequired:[true,"'#slalias4']}"=""

打出JAVA的拼接结果看看,

data-rules=&quot;{selectRequired:[true, &apos;#slalias4&apos;]}&quot;/><span class='icon-delelte-input'>

符合我们的预想,在String中是单引号的返回的还是单引号。但是浏览器解析的时候,会先把&quot;和&apos;组合在一起。当前看来,只能使用第一种形式。具体原因有待以后考证。

 

备注:还有一种可行性,就是尽量避免直接使用字符串拼接html字符串,维护性和扩张性都不强,而且类似本文这种情况,不便做调试和修改。可以采用一些模板工具,比如velocity或者freemaker来解决这一的问题。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值