知识总结:字符串的标点符号转变为英文标点符号

在修改项目bug的时候遇到一个问题,前端通过ajax从后端获取一段字符串,内容是html标签

<img src="www.baidu.com/img/xxxx.jpg" alt="" />
<img src="www.xxxxx.com/img/xxxx.jpg" alt="" />

预期的结果是页面上直接展示图片,但实际结果却是字符串;经过不断地调试,发现了问题出在html标签上,前端从后端获取的html标签里的<,>,",三个符号全是非英文的,所以无法直接以html标签的形式展现,所以在存储html标签时,就需要对标点符号做转换;一开始解决问题的思路是使用replaceAll()进行替换,所以就写了三个replaceAll()来分别替换<,>,",三个符号

String img = "<img src="http://imgsrc.baidu.com/imgad/pic/item/9052df1c9eea06f3d7ca7acbd5e7.jpg" alt="" />"
img = img.replaceAll("<","<");
img = img.replaceAll(">",">");
img = img.replaceAll(""","\"");
//替换后的结果
img = "<img src=\"http://imgsrc.baidu.com/imgad/pic/item/9052df1c9eea06f3d7ca7acbd5e7.jpg\" alt=\"\" />"

后来问题解决之后,就在查找资料,有没有更便捷的方法,直接就能把所有非英文的标点符号转换为英文标点符号,最终找到了中英文字符转换的方法,该方法是通过比较每一个字符的ASCII码,是否在区间中,如果在区间中(该区间由全角标点符号的ASCII码构成),则通过运算转化为英文的标点符号,因为其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248

private String toDBC(String input)
     {    
         char[] c=input.toCharArray();
         for (int i = 0; i < c.length; i++)
         {
             if (c[i]==12288)
             {
                 c[i]= (char)32;
                 continue;
             }
             if (c[i]>65280 && c[i]<65375)
                 c[i]=(char)(c[i]-65248);
         }    
         return new String(c);
     }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值