Javascript: split by this|that
Javascript: split by this|that
我怎么能像这样拆分字符串
var str = "M50 0 L0 100 L100 100 L50 0 z M0 0 L100 0 L50 100 L0 0 Z";
var arr4String = str.split('z|Z');
我希望得到一个包含 3 个元素的数组:
["M50 0 L0 100 L100 100 L50 0", "M0 0 L100 0 L50 100 L0 0", ""]
使用正则表达式。 使用 g
标志表示从头到尾搜索整个字符串,以便它不会在第一次命中z|Z
时停止。 i
标志使搜索不区分大小写。
var str = "M50 0 L0 100 L100 100 L50 0 z M0 0 L100 0 L50 100 L0 0 Z";
var arr4String = str.split(/z/gi);
如果要拆分正则表达式,则需要将正则表达式作为参数传递给split
:
var str = "M50 0 L0 100 L100 100 L50 0 z M0 0 L100 0 L50 100 L0 0 Z";
var arr4String = str.split(/z|Z/);
^ ^
生产:
["M50 0 L0 100 L100 100 L50 0 ", " M0 0 L100 0 L50 100 L0 0 ", ""]
^ ^ ^
(请注意额外的空格,因为正则表达式不会删除这些空格(。
如果要修剪结果,可以使用:
...split(/'s*z's*/i);
或者您可以简单地链接:
...split(/z/i).map(function (val) {
return val.trim();
});
在这里,您可以使用/'s*z's*/i
正则表达式进行拆分:
var str = "M50 0 L0 100 L100 100 L50 0 z M0 0 L100 0 L50 100 L0 0 Z";
var arr4String = str.split(/'s*z's*/i);
document.body.innerHTML = "<pre>" + JSON.stringify(arr4String,0,4) + "</pre>";
/'s*z's*/i
正则表达式将在z
之前和之后匹配零个或多个空格('s*
((由于/i
修饰符而执行不区分大小写的搜索(。
var arr4String = str.replace('z','Z').split('Z');
你很接近,但你想要一个正则表达式而不是一个字符串,你可以通过使用正斜杠而不是引号 ( /z|Z/
(。
但是,仅使用它并不能得到您想要的。您实际上想要一个正则表达式来删除"z"字符周围的空格。此外,假设如果您传入一个包含"L100z200"
的字符串,您也不希望它在中间拆分。为此,您可以使用'b
来确保存在单词边界。给你:
var str = "M50 0 L0 100 L100 100 L50 0 z M0 0 L100 0 L50 100 L0 0 Z";
var arr4String = str.split(/'b's*z's*'b/i);
console.log(arr4String);
// Exactly:
// ["M50 0 L0 100 L100 100 L50 0", "M0 0 L100 0 L50 100 L0 0", ""]
只是为了完整性(可能比/z/i 更快(:
var arr4String = str.split(/[zZ]/);
相关文章:
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- React+Meteor:this.ops返回未定义
- Understanding Javascript scope with "var that = this&qu
- 在函数中获取正确的作用域(不使用that=this)
- Javascript scope and self=this, _this=this, that=this
- Javascript methods: this & that
- Javascript: split by this|that
- 在javascript正则表达式中检查“this AND that WITHOUT this”的方法
- 声明var that = this的原因是什么?在javascript
- JS和OOP:滥用“that = this”模式
- 将this/self/that绑定到事件回调,当它可以不作为事件回调调用时
- 选择$this,显示$that -如何在表单中做到这一点
- that = $(this)表示setTimeout闭包没有按预期工作
- 试图使用“this”;而不必使用“that”将函数作为参数传递给jquery委托事件处理程序
- 使用“;这个“;或“;“;(其中var that=this)