NodeJS中如何去除字符串引号?解决会话写入重复引号问题
解决Node.js中字符串重复引号问题
你遇到的问题是:用JSON.stringify(response.data.userid)得到的userid输出为"U386243148976",写入会话后变成了""U386243148976"",需要保留仅带一层引号的"U386243148976"。
问题根源
JSON.stringify的作用是把JavaScript值转成JSON格式的字符串。如果response.data.userid本身已经是字符串类型(比如U386243148976),用JSON.stringify处理后会给它加上双引号,变成"U386243148976"。当你把这个值写入会话时,会话存储通常会自动对数据进行JSON序列化,导致已有的引号被转义,最终出现双层引号。
解决方案
方案1:直接取值(推荐)
既然response.data.userid本身就是字符串,完全不需要用JSON.stringify处理,直接赋值即可:
axios(userdata) .then(function (response) { userid = response.data.userid; // 去掉JSON.stringify,直接获取原字符串 console.log(userid); // 输出:U386243148976 return cb(null, { userid: userid, role: "editor", }); }) .catch(function (error) { console.log(error); });
这样写入会话后,会话的序列化会自动给字符串加上一层引号,最终得到你期望的"U386243148976"。
方案2:手动去除首尾引号(适用于必须用JSON.stringify的场景)
如果因为某些原因必须用JSON.stringify,可以用正则表达式去掉字符串首尾的双引号:
userid = JSON.stringify(response.data.userid).replace(/^"|"$/g, ''); // 此时userid为纯字符串:U386243148976 // 若需要手动添加一层引号,可再执行: // userid = `"${userid}"`;
内容的提问来源于stack exchange,提问作者Natamongkol
相关产品推荐
相关产品推荐

