Javascript JS:替换包含不同值的字符串
我面临这个挑战: 我需要用以下字符串替换此字符串:Javascript JS:替换包含不同值的字符串,javascript,regex,string,replace,Javascript,Regex,String,Replace,我面临这个挑战: 我需要用以下字符串替换此字符串:“[[OM:随机字符串id]]”:” 其中,OM是要替换的组件类型,随机字符串id是id。这两个部分都可以是动态的,我只需要将组件替换为类型:“OM” #伪代码 var text=[$A:$B]]#这可以是“[[OM:something]]”,“[[AD:somethingelse]]” 如果($A='OM'){ text=text.replace() } 输入:[[OM:something]=>输出:“ 输入:[[AD:somethingel
“[[OM:随机字符串id]]”
:”
其中,OM是要替换的组件类型,随机字符串id是id。这两个部分都可以是动态的,我只需要将组件替换为类型:“OM”
#伪代码
var text=[$A:$B]]#这可以是“[[OM:something]]”,“[[AD:somethingelse]]”
如果($A='OM'){
text=text.replace()
}
输入:[[OM:something]=>输出:“
输入:[[AD:somethingelse]]=>输出:“[[AD:somethingelse]]”
最好的处理方法是什么?名称描述了错误的类型,以及.name的值可以是:EvalError、RangeError、ReferenceError、SyntaxError、TypeError和URIError。根据.name属性返回的错误类型,您可以决定以不同的方式处理错误。使用内置replace的replacer函数:
let str=“[[OM:随机字符串idadsad]]”
str=str.replace(/^\[\[([A-Z]+):(.*)\]\]$/i,函数(匹配,组1,组2,偏移量,字符串){
如果(!group1 | |!group2){//或检查arguments.length,如果小于5,则返回。。
回来
}
if(group1.toUpperCase()=“OM”){
返回“”
}否则{
返回字符串;
}
})
console.log(str)
关于regx
<代码>/^\[\[OM\:([^\]]+)\]\]\]$/
- 首先一个
s每个字符串。。。然后trim
/^$/代码>。。。从字符串的开头到结尾查找
…两个开口括号后跟\[\[OM\:
和一个OM
…然后:
…捕获/记住非([^\]]+)
的任何字符序列]
- 接着是<代码>\]\]两个右括号
函数替换某物(str){
返回阀内件()。更换(
(/^\[\[OM\:([^\]]+)\]\]\]$/),
((…结果)=>``)
);
}
常量listOfInputValues=['[[OM:somethingelse]'、[[AD:somethingelse]]、[[OM:somethingelse]]、[[AD:somethingelse]]];
const listOfOutputValues=listOfInputValues.map(replaceSomething);
log('listoOutputValues:',listoOutputValues)代码>
作为控制台包装{min height:100%!important;top:0;}
对不起,我完全没有领会你的意思。你是说问题的题目吗?你的回答似乎与我的问题无关。我描述了我有一个字符串作为输入,转换后的字符串作为输出-没有对象,没有属性等。只有两个字符串。看起来你把这个答案发布到了一个错误的帖子?。。。regx和替换逻辑对于OP所寻找的内容都是不必要的复杂,如果一个完全遵循提供的信息。。。“…我只需要将组件替换为“OM”类型。”建议的解决方案是可扩展和模块化的。您的es6代码可能会运行得较慢,因为它包含了解构。而且它是不灵活的,因为您硬编码了“OM”。装箱会把它弄坏的。在ie11中不起作用。我可以继续吗?字符串替换会变成美德信号。舞台是你的,彼得,我不干了。