【发布时间】:2020-07-01 15:44:20
【问题描述】:
(这个问题是我之前问题的延续:“how to find private char utf8 in a text?”) 我需要用它的值(存储在地图中)替换每个匹配项,但我已经测试了几件事,包括这个(如下),但它不起作用。我可能没有后见之明来找到解决方案。我已经开了一个小时了。我可能犯了一个很大的错误,为此感到抱歉。 这是我的代码:
const regex = /[\uE000-\uF8FF\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/gu;
var map = new Map();
//set example values in the map
map.set("󰀁", 'something1');
map.set("󰀂", 'something2');
map.set("󰀃", 'something3');
map.set("󰀄", 'something4');
const str = "\u{f0001} lorem ipsum \u{f0002} dolor sit amet \u{f0003}\n consectetur adipiscing elit\u{f0004}\sed do eiusmod tempor</"; // my text
console.log(str);
var tab = str.match(regex).map(x => Array.from(x)
.map((v) => v.codePointAt(0).toString(10))
.map((hex) => "0000".substring(0, 4 - hex.length) + hex))
for(var i = 0 ; i < tab.length ; i++){
str.replace(/[\uE000-\uF8FF\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/u, map.get("&#"+tab[i][0]+";"));
}
console.log(str); //nothing change
【问题讨论】:
-
字符串是不可变的,你用
replace修改str,但不要给它分配新值。但是您还需要用let声明str,而不是用const
标签: javascript regex