在第一个空格出现时拆分字符串

新手上路,请多包涵

我没有得到优化的正则表达式,它根据第一个空格出现将我拆分为字符串:

var str="72 tocirah sneab";

我需要得到:

[
    "72",
    "tocirah sneab",
]

原文由 Luca 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

如果您只关心空格字符(而不是制表符或其他空白字符)并且只关心第一个空格之前的所有内容和第一个空格之后的所有内容,您可以在没有这样的正则表达式的情况下执行此操作:

 str.substring(0, str.indexOf(' ')); // "72"
 str.substring(str.indexOf(' ') + 1); // "tocirah sneab"

请注意,如果根本没有空格,那么第一行将返回一个空字符串,第二行将返回整个字符串。确保这是您在那种情况下想要的行为(或者这种情况不会出现)。

原文由 Trott 发布,翻译遵循 CC BY-SA 4.0 许可协议

Javascript 不支持后视,所以 split 是不可能的。 match 有效:

 str.match(/^(\S+)\s(.*)/).slice(1)

另一个技巧:

 str.replace(/\s+/, '\x01').split('\x01')

怎么样:

 [str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]

那么为何不

reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)

或者可能

re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))

_2019 更新_:从 ES2018 开始,支持后视:

 str = "72 tocirah sneab"
s = str.split(/(?<=^\S+)\s/)
console.log(s)

原文由 georg 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题