记一则js替换字符串的问题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

软件的一处功能用到EasyUI的表单提交,返回一串字符串,这串字符串里有一段HTML代码,正常的情况下这段HTML代码里的双引号“  是用 \ 转义过的。在IE中没问题,但是在Firefox和Chrome里那段字符串就自动加上了"而且原来的双引号还在。但是看响应内容的字符串就没有。用firebug调试的时候输出来的字符串就变了。

请求响应和IE中是这样

{"id":2,"title":"文章标题","info":"<span class=\"ke-insertfile\">详见附件。</span>"}

Firefox和Chrome中是这样

{"id":2,"title":"文章标题","info":"<span class="\&quot;ke-insertfile\&quot;">详见附件。</span>"}

没有经过任何处理,一串字符串自动就变成这样了。真不知道Firefox和Chrome怎么处理的。

这串字符串需要变成json对象,所以只能把多出来的东西替换掉。

js中replace方法只能替换第一个匹配的字符串不能做到全局。所以就上网查了下资料,得到的方法有几种:

1. str.replace(/oldString/g,newString)

2. str.replace(new RegExp(oldString,"gm"),newString)

3. 增加String 对象原型方法 replaceAll

String.prototype.replaceAll = function (s1,s2){
return this .replace( new RegExp(s1, "gm" ),s2);
}

我首先用的是直接增加String对象的原型方法,加上了以后任何一个地方都可以用。

但是试了将近一下午,由于我对正则表达式不怎么会用。最后怎么都匹配不了。

需要替换的有两个

把"\&quot;变成\"
把\&quot;"变成\"

第二个好弄,replaceAll('\\&quot;','\\"')这样直接就替换了。

第一个用replaceAll('\\\"&quot;','\\"')怎么也替换不了。

试了好多种,前面能匹配那个 ",然后 \ 就匹配不上。

直接用replaceAll('\\','')这样还报错,不能以 \ 结尾。

不管怎么匹配,"\&quot; 中匹配 " 可以,匹配后面的&quot;也可以,就是匹配不到 \ 

无奈今天早上突然想起来,换个方法,上面第2种方法其实和第三种一样。就换了第一种方法。

开始忽略了引号 replace(/"\\&quot;/g,'\\"')replace('/"\\&quot;/g','\\"')是两个完全不一样的东西。

实践证明前面的是对的。前面的是表达式,后面的是字符串。然后我就豁然开朗。难道是这个原因?

于是就回去试replaceAll(),结果第一个参数必须是字符串,不支持表达式。只能还是用replace()的方法了。



转载于:https://my.oschina.net/u/568577/blog/417046

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『图解Java并发』面试必问的CAS原理你会了吗?

在并发编程中我们都知道i操作是非线程安全的&#xff0c;这是因为 i操作不是原子操作。如何保证原子性呢&#xff1f;常用的方法就是加锁。在Java语言中可以使用 Synchronized和CAS实现加锁效果。Synchronized是悲观锁&#xff0c;线程开始执行第一步就是获取锁&#xff0c;一旦…

美易官方:“圣诞老人行情”美股能否延续近期涨势?

圣诞老人行情”有望上演&#xff0c;美股能否延续近期涨势&#xff1f; 随着圣诞节的临近&#xff0c;市场开始期待所谓的“圣诞老人行情”能够上演。在过去的几年里&#xff0c;这个时期往往会出现一波上涨行情&#xff0c;给投资者带来一些安慰和喜悦。然而&#xff0c;今年的…

Linux高并发应用类型对系统内核的优化

Linux操作系统内核参数优化net.ipv4.tcp_max_tw_buckets 6000 net.ipv4.ip_local_port_range 1024 65000 net.ipv4.tcp_tw_recycle 1 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_syncookies 1 net.core.somaxconn 262144 net.core.netdev_max_backlog 262144 net.ipv4.tcp_m…

Java LinkedHashMap forEach()方法与示例

LinkedHashMap类的forEach()方法 (LinkedHashMap Class forEach() method) forEach() method is available in java.util package. java.util包中提供了forEach()方法 。 forEach() method is used to perform the specified action for every entry (key-value) pairs in the …

SimpleDateFormat线程不安全的5种解决方案!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;1.什么是线程不安全&#xff1f;线程不安全也叫非线程安全&#xff0c;是指多线程执行中&#xff0c;程序的执行结果和预期的…

Java LineNumberReader mark()方法与示例

LineNumberReader类mark()方法 (LineNumberReader Class mark() method) mark() method is available in java.io package. mark()方法在java.io包中可用。 mark() method is used to set the current position in this LineNumberReader stream and whenever we call to reset…

mac地址漂移flapping的前因后果

一、什么是mac地址flapping?mac地址漂移是指&#xff1a;在同一个vlan内&#xff0c;mac地址表项的出接口出现变更。如图&#xff1a;二、产生的原因1、因为环路或VRRP切换&#xff0c;导致的MAC地址漂移告警。&#xff08;不予关注&#xff09;2、因为无线用户漫游&#xff0…

时间转换竟多出1年!Java开发中的20个坑你遇到过几个?

前言最近看了极客时间的《Java业务开发常见错误100例》&#xff0c;再结合平时踩的一些代码坑&#xff0c;写写总结&#xff0c;希望对大家有帮助&#xff0c;感谢阅读~1. 六类典型空指针问题包装类型的空指针问题级联调用的空指针问题Equals方法左边的空指针问题ConcurrentHas…

android去掉顶部标题栏

在AndroidManifest.xml中实现&#xff1a; 注册Activity时加上如下的一句配置就可以实现。 <activity android:name".Activity"android:theme"android:style/Theme.NoTitleBar"></activity>

Oracle RAC Failover 详解

2019独角兽企业重金招聘Python工程师标准>>> Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用&#xff0c;连接到故障节点的用户会被自动转移到健康节…

超级详细的Spring Boot 注解总结

日常编程中我相信大家肯定都用过spring&#xff0c;也用过spring的注解&#xff0c;哪怕面试的时候也经常会被问到一些spring和spring boot注解的作用和含义等&#xff0c;那么这篇就带大家来看看超级详细的Spring Boot 注解总结&#xff01;搞起!我们先来看看本篇会讲到的注解…

Android下 布局加边框 指定背景色 半透明

文章转自&#xff1a;http://www.cnblogs.com/bavariama/archive/2013/09/25/3338375.html 背景设置为自定义的shape文件&#xff1a; <!-- <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/a…

inputstream示例_Java InputStream available()方法与示例

inputstream示例InputStream类的available()方法 (InputStream Class available() method) available() method is available in java.io package. available()方法在java.io包中可用。 available() method is used to return the number of available bytes left for reading …

json前后台传值

谈到JSON,简单的说就是一种数据交换格式。近年来&#xff0c;其在服务器之间交换数据的应用越来越广&#xff0c;相比XML其格式更简单、编解码更容易、扩展性更好&#xff0c;所以深受开发人员的喜爱。 下面简单的写一下在项目中前后台json传值的一个小例子&#xff0c;供大家参…

一个ThreadLocal和面试官大战30个回合

开场杭州某商务楼里&#xff0c;正发生着一起求职者和面试官的battle。面试官&#xff1a;你先自我介绍一下。安琪拉&#xff1a;面试官你好&#xff0c;我是草丛三婊&#xff0c;最强中单&#xff08;妲己不服&#xff09;&#xff0c;草地摩托车车手&#xff0c;第21套广播体…

ASP.NET 网站项目 EF 的简单操作例子

ASP.NET 网站项目 EF 的简单操作例子&#xff1a;操作代码&#xff1a;using EFTest.Models; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.Mvc;namespace EFTest.Controllers {public class D…

java enummap_Java EnumMap containsValue()方法与示例

java enummapEnumMap类containsValue()方法 (EnumMap Class containsValue() method) containsValue() method is available in java.util package. containsValue()方法在java.util包中可用。 containsValue() method is used to check whether the given value element (val_…

mysql主主互备架构

mysql主主互备架构企业级mysql集群具备高可用&#xff0c;可扩展性&#xff0c;易管理&#xff0c;低成本的特点。mysql主主互备就是企业中常用的一个解决方案。在这种架构中&#xff0c;虽然互为主从&#xff0c;但同一时刻只有一台mysql 可读写&#xff0c;一台mysqk只能进行…

图文并茂的聊聊Java内存模型!

在面试中&#xff0c;面试官经常喜欢问&#xff1a;『说说什么是Java内存模型(JMM)&#xff1f;』面试者内心狂喜&#xff0c;这题刚背过&#xff1a;『Java内存主要分为五大块&#xff1a;堆、方法区、虚拟机栈、本地方法栈、PC寄存器&#xff0c;balabala……』面试官会心一笑…

JS根据文本框内容匹配并高亮显示

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script type"text/javascript">function SearchCompare() {// 获取搜索字符串var searchText document.getElementById("SearchCompa…