我试图通过空格和/或新行拆分一些文本,并在整个文本之前和之后删除空格,以防万一。我不知道如何执行此操作,因为我无法理解正则表达式(我已经尝试了其他人的正则表达式,但它打破了我的输出)并且我想使用最佳实践执行此操作而不是写一些冗长的越野车解决方法
我的代码可以在这里找到:https://github.com/Dave-Melia/Text-Separator
非常感谢
d
答案 0 :(得分:7)
要拆分任何空格(包括换行符),您将/\s/
与split
一起使用:
var theArray = theString.split(/\s+/);
\s
表示“空格”(例如,空格 - 包括换行符),+
表示“一个或更多”。
要首先从字符串的开头和结尾修剪空白,在任何现代浏览器上都可以使用String#trim
:
var theArray = theString.trim().split(/\s+/);
如果您必须支持旧浏览器,则可以使用replace
:
var theArray = theString.replace(/^\s+|\s+$/g, '').split(/\s+/);
与replace
一起使用的正则表达式可以使用一些解释:http://regex101.com/r/sS0zV3/1
^\s+
表示“字符串开头的任何空格|
表示“或”(如“或那个”)(称为“替换”)\s+$
表示“字符串末尾的任何whitepsace 然后我们将所有出现次数(g
)替换为''
(空白字符串)。
答案 1 :(得分:3)
您可以拆分正则表达式,因为\s
适用于所有包含换行符的空白,所以:
' bla\nblabla blablabla\n blablablabla'
.replace(/^\s+|\s+$/g,'')
.split(/\s+/);
//=> ["bla", "blabla", "blablabla", "blablablabla"]
答案 2 :(得分:1)
简单,split函数采用regexp
var a = "foo bar\nfoo".split(/\s/)
// this returns ["foo", "bar", "foo"]
如果你有多个空格(注意加号)
var a = "foo bar \n foo".split(/\s+/)
// this returns ["foo", "bar", "foo"]
在你可以使用trim()之前和之后摆脱whitespases
var a = " foo bar \n foo ".trim().split(/\s+/)
// this returns ["foo", "bar", "foo"]
答案 3 :(得分:1)
要按空格分割,您可以在正则表达式中使用\s
对于换行符,您可以使用\n
(和\r
)
我创建了一个分解并删除空数组项的示例。
注意:在下面的示例中,我添加了空格并打破了空字符。
function splitText(data) {
return String(data).split(/[\0\s]+/g).filter(Boolean);
}
console.log(splitText(" dat a a "));
IE8:
function splitText(data) {
var arr = String(data).split(/[\0\s]+/g), i, j, v = [];
j = arr.length;
for (i = 0; i < j; i += 1) {
if (arr[i] !== "") {
v.push(arr[i]);
}
}
arr = null;
return v;
}
alert(splitText(" dat a a "));