首页 > 解决方案 > 单个JS函数替换多个字符串

问题描述

我有能力在网络应用程序(FormAssembly)中包含基本的 Javascript 函数,我需要它来解析并进行一些字符串替换。我不了解 JS,并且一直在努力弄清楚如何获得正确的语法和逻辑,所以希望这是有道理的。

此应用程序中允许的 Javascript 函数的示例是:if(var=="banana"){"banana;"}else{""}

输入文本var可以是一些水果的形式,如bananabananagrapebananagrapekiwi。最多有 5 个值,我知道所有可能的值。基本上我想在;所有水果上附加一个分号字符,以便输出文本是banana;banana;grape;kiwi;

这就是我想出的。我无法从这个 Web 应用 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>

标签: javascript

解决方案


您可以创建一个替代并用一个额外的替换匹配;

$&获取匹配的子字符串

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"))


推荐阅读