如何使用原生JS分割含空格和换行符的字符串(非jQuery方案)
如何分割包含空格和换行的字符串以得到指定结果?
嘿,我来帮你搞定这个问题!你现在用split(' ')得到一堆乱七八糟的空字符串和带换行的元素,其实是因为这个方法只会把单个空格当成分隔符,完全不会处理换行符,而且连续空格还会生成空项,自然达不到预期。
解决方案1:用match()匹配目标内容(更直观)
其实比起拆分,直接匹配你想要的内容会更简单。你期望的每个元素都是「可选的空白字符(空格/换行)+ 单词」,用正则就能精准匹配出来:
// 假设你的原始字符串包含空格和换行,比如: var a = ' that i love\n game'; // 用正则全局匹配所有符合规则的片段 var result = a.match(/\s*\w+/g); console.log(result); // 输出 [" that", "i", " love", " \ngame"]
给你解释下这个正则:
\s*:匹配0个或多个空白字符(包括空格、换行符\n)\w+:匹配一个或多个字母、数字(也就是你要的“单词”部分,比如that、game1都能匹配)/g:全局模式,会找出字符串里所有符合规则的片段
解决方案2:用带正则的split()拆分
如果你一定要用split(),也可以通过正则指定拆分的位置——我们只在「单词结束后、空白开始前」拆分,这样就能保留每个元素前面的空白:
var a = ' that i love\n game'; var result = a.split(/(?<=\w)\s+/); console.log(result); // 同样得到 [" that", "i", " love", " \ngame"]
这里的(?<=\w)是正向断言,意思是“拆分的位置必须跟在一个单词字符后面”,\s+则匹配一个或多个空白字符,这样拆分后就不会出现空字符串,还能保留你想要的前缀空白和换行。
两种方法都是纯原生JavaScript实现,完全不需要依赖jQuery哦~
内容的提问来源于stack exchange,提问作者Alisha Sharma
相关产品推荐
相关产品推荐

