Luc*_*uca 135 javascript regex
我没有得到一个优化的正则表达式,它将一个字符串分成第一个空白区域:
var str="72 tocirah sneab";
Run Code Online (Sandbox Code Playgroud)
我需要得到:
[
"72",
"tocirah sneab",
]
Run Code Online (Sandbox Code Playgroud)
Tro*_*ott 298
如果您只关心空格字符(而不是制表符或其他空白字符)并且只关心第一个空格之前的所有内容以及第一个空格之后的所有内容,则可以不使用如下的正则表达式:
str.substr(0,str.indexOf(' ')); // "72"
str.substr(str.indexOf(' ')+1); // "tocirah sneab"
Run Code Online (Sandbox Code Playgroud)
请注意,如果根本没有空格,则第一行将返回空字符串,第二行将返回整个字符串.确保在这种情况下您想要的行为(或者不会出现这种情况).
geo*_*org 45
Javascript不支持lookbehinds,所以split不可能.match作品:
str.match(/^(\S+)\s(.*)/).slice(1)
Run Code Online (Sandbox Code Playgroud)
另一招:
str.replace(/\s+/, '\x01').split('\x01')
Run Code Online (Sandbox Code Playgroud)
怎么样:
[str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]
Run Code Online (Sandbox Code Playgroud)
那么为何不
reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)
Run Code Online (Sandbox Code Playgroud)
或者可能
re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))
Run Code Online (Sandbox Code Playgroud)
小智 27
在ES6中你也可以
let [first, ...second] = str.split(" ")
second = second.join(" ")
Run Code Online (Sandbox Code Playgroud)
小智 15
在游戏的后期,我知道但似乎有一种非常简单的方法:
const str = "72 tocirah sneab";
const arr = str.split(/ (.*)/);
console.log(arr);Run Code Online (Sandbox Code Playgroud)
这将使arr[0]与"72"和arr[1]用"tocirah sneab".请注意,arr [2]将为空,但您可以忽略它.
以供参考:
Jos*_*eph 13
var arr = []; //new storage
str = str.split(' '); //split by spaces
arr.push(str.shift()); //add the number
arr.push(str.join(' ')); //and the rest of the string
//arr is now:
["72","tocirah sneab"];
Run Code Online (Sandbox Code Playgroud)
但我仍然认为有更快的方法.
小智 11
georg的解决方案很好,但如果字符串不包含任何空格,则会中断.如果你的字符串有可能不包含空格,那么使用.split和捕获组更安全:
str_1 = str.split(/\s(.+)/)[0]; //everything before the first space
str_2 = str.split(/\s(.+)/)[1]; //everything after the first space
Run Code Online (Sandbox Code Playgroud)
你也可以使用.replace来替换第一次出现,
?str = str.replace(' ','<br />');
Run Code Online (Sandbox Code Playgroud)
离开/ g.
我不确定为什么所有其他答案都如此复杂,当您可以在一行中完成所有操作时,还可以处理空间不足的问题。
例如,让我们获取名称的第一个和“其余”组件:
const [first, rest] = 'John Von Doe'.split(/\s+(.*)/);
console.log({ first, rest });
// As array
const components = 'Surma'.split(/\s+(.*)/);
console.log(components);Run Code Online (Sandbox Code Playgroud)