我有能力在Web应用程序(FormAssembly)中包含基本的Javascript函数,并且我需要它来解析并进行一些字符串替换。我不了解JS,并且一直在努力寻找如何获取正确的语法和逻辑,因此希望这是有意义的。
此应用程序中允许的Javascript函数的示例为:if(var=="banana"){"banana;"}else{""}
输入文本var
可以是一些水果的形式,就像banana
,bananagrape
或bananagrapekiwi
一样。最多有5个值,我知道所有可能的值。基本上,我想将分号;
附加到所有水果上,以便输出文本为banana;
或banana;grape;kiwi;
这就是我想出的。我无法从此网络应用程序FormAssembly中检索错误消息,所以我无法分辨出什么无效:
<script>
const parseFruit = (val) => {
return val.replace(/banana/g,"banana;").replace(/kiwi/g,"kiwi;")
}
</script>
对于获得正确语法的任何帮助,我们将不胜感激
更新:看起来初始函数正在对没有空格的输入参数起作用。我如何在replace
函数的第一个参数中包含空格?
<script>
const parseFruit = (val) => {
return val.replace(/banana/g,"banana;").replace(/other fruit/g,"other fruit;")
}
</script>
答案 0 :(得分:3)
您可以创建一个alternation并将匹配项替换为额外的;
$&
获取匹配的子字符串
const parseFruit = val => val.replace(/banana|kiwi|grape/g, "$&;")
console.log(parseFruit("bananagrapekiwi"))
console.log(parseFruit("bananakiwi"))
如果您有一个水果数组,则可以通过将数组与|
和RegExp
构造函数结合在一起来创建动态替换
const fruits = ["banana", "kiwi", "grape", "apple", "mango"],
regex = new RegExp(fruits.join("|"), 'g');
const parseFruit = val => val.replace(regex, "$&;")
console.log(parseFruit("bananagrapekiwi"))
console.log(parseFruit("grapeapplemango"))
console.log(parseFruit("applebanana"))