javascript - 将字符串处理成使用数组分隔的单词
问题描述
嗨所以我在Javascript中有一个问题,是否可以使用给定的数组,例如
["old", "great", "other", "long", "good", "last"]
如果你有一个
var str = "oldgreatotherlonggoodlastfirstnewownlittle"
并使用数组和正则表达式用空格打印它?
例如。
old great other long good lastfirstnewownlittle
我只是在 javascript 中做一个简单的网络应用程序,只是为了练习。
解决方案
您可以在数组上使用Array.join()生成正则表达式,然后将其与String.replace()一起使用。在下一个示例中,我使用了replace 的替换功能,它在某些情况下为替换逻辑提供了更多控制。但是您可以避免它并使用@Barmar回答。
let arr = ["old", "great", "other", "long", "good", "last"];
var str = "oldgreatotherlonggoodlastfirstnewownlittle";
let re = new RegExp(arr.join("|"), "g");
let out = str.replace(re, (m) => m + " ");
console.log(out);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
但是,请注意,以前的方法仅在某些特定情况下有效,但例如,对于var str = "oldotherlonglastfirstnewgoodownlittlegreat";
. 然后,更通用的方法是:
let arr = ["old", "great", "other", "long", "good", "last"];
var str1 = "oldotherlonglastfirstnewgoodownlittlegreat";
var str2 = "oldgreatotherlonggoodlastfirstnewownlittle"
const separateMatches = (str, arr) =>
{
let re = new RegExp(arr.join("|"), "g");
let out = str.replace(re, (m) => ` ${m} `);
return out.replace(/\s+/g, " ").trim();
}
console.log(separateMatches(str1, arr));
console.log(separateMatches(str2, arr));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
推荐阅读
- android-studio - 在 3 次输入/更改文本后禁用 editText
- android - ConstraintLayout wrap_content 排除孩子
- json - 如何在 PostgreSQL 存储过程中重用 JSON 参数
- java - element.style 在一台服务器中禁用
- c# - 实体框架模型属性未在更新数据库命令上创建
- python - Django 列表视图反复失败,但详细信息页面有效
- .net - ASP.NET MVC 5 项目文件夹中缺少脚本文件夹
- javascript - 如何使用javascript中的提示输入在对象类中添加新对象
- c++ - 如何在 g++ 10 中使用范围?
- excel - 关于如何将硬编码值转换为变量的 VBA Excel 宏问题