javascript - 如何仅替换模式的一部分?
问题描述
我有以下字符串:
var hashString = "model,5;month,10;year,2018";
document.write(hashString);
模式是paramName1,valueName1;paramName2,valueName2;paramName3,valueName3,依此类推,添加我需要的名称/值对。
我需要更改 paramNameX 的 valueNameX。尝试使用正则表达式;我不太能应付他们。结束分隔符是 ; 还是“空”?开始?
试过这个:
var hashString = "model,5;month,10;year,2018";
paramName = "month,";
paramValue = 8;
hashString = hashString.replace(/paramName.*;/g, paramValue);
document.write(hashString);
但没有任何成功。
解决方案
您可以不使用regex
.
脚步:
split
你的字符串;
会得到一个数组。map
通过数组的每个字符串并检查它是否includes
paramName
。如果它确实返回,则paramName + paramValue
返回相同的字符串。join
在保留为分隔符的同时返回字符串数组;
,您将获得预期的输出。
var hashString = "model,5;month,10;year,2018";
var paramValueReplacer = (paramName, paramValue, str) => str.split(";")
.map(s => s.includes(paramName) ? paramValue ? (paramName + paramValue) : "" : s)
.filter(s => !!s)
.join(";")
var paramName1 = "month,";
var paramValue1 = 8;
console.log(paramValueReplacer(paramName1, paramValue1, hashString))
var paramName2 = "month,";
var paramValue2 = "";
console.log(paramValueReplacer(paramName2, paramValue2, hashString))
推荐阅读
- javascript - 如何在异步函数节点js中访问所有函数和条件中的变量?
- whatsapp - 带有 C# 的 Whatsapp Web Selenium 无需重新加载网络即可发送消息
- php - 如何将行变量传递到另一个页面?
- aws-api-gateway - API 网关阻止正文中包含内容的请求
- c# - Clr2 Winform 可以托管 Clr4 WPF 或其他机制吗?
- c# - 2013 年的程序无法访问使用 access 2007 创建的数据库
- android - 如何在垂直视图寻呼机顶部添加页边距?
- python - 找到创建平衡值集的集合的子集
- python - 如果用户输入“”,如何创建默认值?
- acumatica - Acumatica:为什么有些用户在修改后会重复?