javascript - 单个JS函数替换多个字符串
问题描述
我有能力在网络应用程序(FormAssembly)中包含基本的 Javascript 函数,我需要它来解析并进行一些字符串替换。我不了解 JS,并且一直在努力弄清楚如何获得正确的语法和逻辑,所以希望这是有道理的。
此应用程序中允许的 Javascript 函数的示例是:if(var=="banana"){"banana;"}else{""}
输入文本var
可以是一些水果的形式,如banana
、bananagrape
或bananagrapekiwi
。最多有 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>
解决方案
您可以创建一个替代并用一个额外的替换匹配;
$&
获取匹配的子字符串
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"))
推荐阅读
- python - 一系列数字的内部和
- typescript - 为什么打字稿中的方法参数不是逆变的
- oracle - 每次显示错误时,我都无法使用 if 语句。预期以下之一时遇到符号 IF
- microservices - 在事件驱动的微服务中处理 UI
- matlab - 通过线连接两点后如何保存图像?
- angular - Angular *ngFor 仅显示 1 个数据项
- java - SharedPreferences 是外部存储还是内部存储?
- powershell - 使用 WinRM 时出现 PSRemotingTransportException - IIS Web 应用部署
- rust - 如何处理来自 actix-multipart 数据的文件而不将其保存到磁盘
- node.js - 无法从本地存储中检索数据(Angular 8)