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第一个,因为看起来您正在处理查询字符串参数,我建议您