ps 的输出可以给你这样的行:
0.0 0.2 88 /usr/sbin/securityd
或者像这样:
47.0 0.3 7770 node
或者甚至:
1.0 2.5 585 /Applications/PhpStorm.app/Contents/MacOS/phpstorm
列之间的空格数量根据列的内容而变化。如果你想提取列值,我做了一个丑陋的解决方案:
line.replace(' ', ' ').replace(' ', ' ').replace(' ', ' ').split(' ');
这涵盖了从 4 个空格到 2 个空格的所有内容。如果我想支持 5 个空格,我将需要另一个替换,说实话我不喜欢这个解决方案。我当时想过解析每个字符寻找空格并累积连续的非空格字符,但我想知道是否有更好的方法,也许使用正则表达式?
最佳答案
您可以使用正则表达式 split
函数匹配任意数量的空格。
var lines = line.split(/\s+/);
\s+
正则表达式匹配一个或多个空格。
使用您提供的字符串的可运行示例:
var lines = [
"0.0 0.2 88 /usr/sbin/securityd",
"47.0 0.3 7770 node",
"1.0 2.5 585 /Applications/PhpStorm.app/Contents/MacOS/phpstorm"
];
for (var i in lines)
console.log(lines[i].split(/\s+/));
关于javascript - 使用变量空格分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474768/