javascript - 用 in 字符串替换两个索引之间的多个字符串
问题描述
我有一个字符串。我想substrings
用字符串替换。对于每个substring
我都有开始和结束索引。使用regex
超出范围。
所以 from let str = "我想要点餐厅的鸡肉披萨和奶酪披萨";
预期的结果将是这样的。
I want TYPE1 TYPE4 and TYPE1 pizza from point restaurant
let str = "I want chicken pizza and cheese pizza from point restaurant";
let roles = [{
"start": 7,
"end": 14,
"typeId": "TYPE1",
"type": "toppings",
"text": "chicken"
},
{
"start": 25,
"end": 31,
"typeId": "TYPE1",
"type": "toppings",
"text": "cheese"
},
{
"start": 15,
"end": 20,
"typeId": "TYPE4",
"type": "main ingredient",
"text": "pizza"
}
];
let styledStr = str;
roles.map(r => {
const { start, end, typeId, text } = r;
let strArr = str.split('');
let removeStr = strArr.splice(start, end, typeId);
styledStr = strArr.join('');
console.log(styledStr);
});
解决方案
- 如果您不需要地图,请不要使用地图
- 除非您必须使用拼接,否则无需拆分
使用 start 和 end 的方法 -注意我对角色进行排序,所以我们从最高位置开始
let str = "I want chicken pizza and cheese pizza from point restaurant";
let roles = [{
"start": 7,
"end": 14,
"typeId": "TYPE1",
"type": "toppings",
"text": "chicken"
},
{
"start": 25,
"end": 31,
"typeId": "TYPE1",
"type": "toppings",
"text": "cheese"
},
{
"start": 15,
"end": 20,
"typeId": "TYPE4",
"type": "main ingredient",
"text": "pizza"
}
];
let styledStr = str;
roles.sort((a,b)=>b.start-a.start)
roles.forEach(r => {
const { start, end, typeId, text } = r;
// Using substring because it is more readable and saves a split
styledStr = styledStr.substring(0,start) + typeId + styledStr.substring(end)
styledStr.slice(start,end,typeId)
});
console.log(styledStr)
使用文本替换的方法
let str = "I want chicken pizza and cheese pizza from point restaurant";
let roles = [{
"start": 7,
"end": 14,
"typeId": "TYPE1",
"type": "toppings",
"text": "chicken"
},
{
"start": 25,
"end": 31,
"typeId": "TYPE1",
"type": "toppings",
"text": "cheese"
},
{
"start": 15,
"end": 20,
"typeId": "TYPE4",
"type": "main ingredient",
"text": "pizza"
}
];
let styledStr = str;
roles.forEach(r => {
const { start, end, typeId, text } = r;
console.log(start,end,text)
styledStr = styledStr.replace(text,typeId)
});
console.log(styledStr)
推荐阅读
- android - 错误:“相机:无法将已分离的用例设置为活动状态”
- angular - 如何使用具有特定数据格式的 get() 模拟服务
- python - 如何请求多渠道转化?
- powershell - Powershell New-ADUser 密码复杂性异常
- css - css 上的活动选择器不起作用,但 :hover 可以正常工作
- sql - 在 SQL-Server 中创建视图
- javascript - 将 jQuery 行转换为 JavaScript
- javascript - 在动态 crm 中刷新页面时出错
- azure - 免费试用结束后,Microsoft Azure 会向我收费吗?
- python - ConnectionRefusedError: [WinError 10061] 无法建立连接,因为目标机器使用 MySQL 主动拒绝它