Javascript 替换为:在序列化数据中

Javascript 替换为:在序列化数据中,javascript,typescript,Javascript,Typescript,我正在接收一个序列化数据,格式如下 error_message=%7B%0D%0A+null+%7D&systemId=53183&cert-id=176061&score=0&q2c=3%5C0&q2t=&answer_data=0000 如何将=替换为:using typescript and replace应适用于所有出现的=,除了第一个是error\u message=value&systemId:value&cert id=value等

我正在接收一个序列化数据,格式如下

error_message=%7B%0D%0A+null+%7D&systemId=53183&cert-id=176061&score=0&q2c=3%5C0&q2t=&answer_data=0000
如何将=替换为:using typescript and replace应适用于所有出现的=,除了第一个是error\u message=value&systemId:value&cert id=value等等


我尝试使用splice,但这似乎是一个很长的过程,而且随着字符串的增长速度也没有那么快。

您可以通过将字符串拆分为
=
,然后将第一个元素与所有其他元素区别对待:

const input='error_message=%7B%0D%0A+null+%7D&systemId=53183&cert id=176061&score=0&q2c=3%5C0&q2t=&answer_data=0000';
常量repl=(inp)=>{
常量[firstEl,…rest]=inp.split(//\=/);//按“=”分割
返回`${firstEl}=${rest.join(':')}`;//+'='+
}

console.log(repl(input))您可以使用该方法获取第一个“=”,然后将字符串分成两个不同的部分(一个在第一个“=”之前,一个在之后)和以下等号

const string=“错误消息=%7B%0D%0A+null+%7D&systemId=53183&cert id=176061&score=0&q2c=3%5C0&q2t=&answer\u data=0000”
常量firstSignIndex=string.indexOf('='))
const result=string.slice(0,firstSignIndex+1)+string.slice(firstSignIndex+1)。替换(/=/g',:'))

console.log(result)
看起来这些是URL搜索查询参数,因此您可以使用
urlsearchparms
构造函数以更易于管理的格式获取它们,然后根据需要对它们进行操作:

const queryString='error_message=%7B%0D%0A+null+%7D&systemId=53183&cert id=176061&score=0&q2c=3%5C0&q2t=&answer_data=0000'
const[first,…rest]=[…新的URLSearchParams(queryString)]
.map(([k,v])=>[k,v].map(组件))
//假设您仍然需要URI编码,否则请删除映射
常数结果=[
首先,加入(“:”),
…rest.map(x=>x.join('='),
].join(“&”)

console.log(result)
检查此项,这将帮助您将
=
替换为
,但序列化字符串中第一次出现的
=
除外

let a='error_message=%7B%0D%0A+null+%7D&systemId=53183&cert id=176061&score=0&q2c=3%5C0&q2t=&answer_data=0000',
firstOcc=a.indexOf(“error_message=)+“error_message=”。长度,
starterStr=a.子字符串(0,第一个OCC),
replacedStr=a.substring(firstOcc,a.length);
console.log(starterStr+replacedStr)

因此,您希望替换除最接近符号ANDSYA之外的所有等号,即使这样也会有好处。您的描述与您的示例不匹配。您想替换除第一个之外的所有
=
,或者交替替换
=
?@lionelrowee all excape第一个,因为看起来您正在处理查询字符串参数,我建议您