Javascript -根据字符拆分字符串,但将其保留在结果数组中
Javascript - Split a string based on a character but retain it in the resulting array
输入
((Sass and Javascript) or (Python and Scala))
分隔符 -"("answers")"
Output是一个数组,分隔符作为元素
["(","(","Sass and Javascript",")","or","(","Python and Scala",")",")"]
我所面临的问题是这样的。var arr = "((Sass and Javascript) or (Python and Scala))".split(/[(|)]/);
console.log(arr);
document.getElementById("output").innerHTML = arr;
<div id="output"></div>
当我在字符串上使用拆分时,我失去了"("answers")"字符,因为它们可能出现在字符串中的任何地方,我需要手动将它们插入到数组中。在JS中有更好的方法来做到这一点吗?
可以使用regex
/[()]|[^()]*/g
Regex演示与说明
-
[()]
:匹配(
或)
一次 -
|
: or -
[^()]
:否定类,不包括(
和)
-
*
:匹配0个或多个前面的类 -
g
: Global match
var str = '((Sass and Javascript) or (Python and Scala))';
var matches = str.match(/[()]|[^()]*/g) || [];
matches.pop(); // Remove the last empty match from array
console.log(matches);
document.write('<pre>' + JSON.stringify(matches, 0, 2) + '</pre>');
就这么简单
var string = '((Sass and Javascript) or (Python and Scala))';
var result = str.match(/[()]|[^()]*/g);
console.log(result)
var string = "abcdeabcde";
string = string.replace(/(/gi, ",(,");
string= string.replace(/)/gi, ",),");
var newstring = string.split(",");
return newstring;
您可以在分割中使用捕获括号来简化这一点。(注意,这显然不是所有浏览器都支持的。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
当您在拆分正则表达式中使用捕获括号时,捕获的分隔符将与'拆分'内容一起返回到列表中。
"((Sass and Javascript) or (Python and Scala))".split(/'s*([()])'s*/)
输出["", "(", "", "(", "Sass and Javascript", ")", "or", "(", "Python and Scala", ")", "", ")", ""]
您可能需要稍后处理它以排除零长度的元素。
var log = function(val){
console.log(val);
document.write('<pre>' + JSON.stringify(val , null , ' ') + '</pre>');
}
var firstStr = '((Sass and Javascript) or (Python and Scala))';
var secondStr = '{>Sass and Javascript< or [Python and Scala]}';
var firstArr = firstStr.match(/[^A-Za-z ]|[A-Za-z ]+/g);
var secondArr = secondStr.match(/[^A-Za-z ]|[A-Za-z ]+/g);
log(firstArr);
log(secondArr);
<div id ='el'></div>
相关文章:
- 分派点击事件并保留击键修饰符
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- JSONP请求返回结果,但也触发error_callback
- 提交后保留下拉选择的值
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 刷新后保留对网页的更改
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 表单提交后保留数据库查询结果
- 角度 ui 类型提前建议 + 如果没有结果,则保留
- Javascript -根据字符拆分字符串,但将其保留在结果数组中
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- 如何在单击搜索按钮并在同一页面上打印结果后同时保留搜索查询框和字母搜索
- 如何在选择后保留Select2结果
- 分割一个值,但将值保留在结果数组中
- 保留proc.stdout.on()结果