单个JS函数可替换多个字符串

时间:2019-08-05 19:18:14

标签: javascript

我有能力在Web应用程序(FormAssembly)中包含基本的Javascript函数,并且我需要它来解析并进行一些字符串替换。我不了解JS,并且一直在努力寻找如何获取正确的语法和逻辑,因此希望这是有意义的。

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

输入文本var可以是一些水果的形式,就像bananabananagrapebananagrapekiwi一样。最多有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>

1 个答案:

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