【发布时间】:2017-03-14 19:29:39
【问题描述】:
我想将例如“FileNotFound”更改为“File Not Found”。
显而易见的
"FileNotFound".split(/[A-Z]/g).join(" ")
返回“ile ot ound”,这让我听起来像是有某种语言缺陷。
【问题讨论】:
标签: javascript
我想将例如“FileNotFound”更改为“File Not Found”。
显而易见的
"FileNotFound".split(/[A-Z]/g).join(" ")
返回“ile ot ound”,这让我听起来像是有某种语言缺陷。
【问题讨论】:
标签: javascript
很抱歉自我回答,但我认为这很整洁。 更多欢迎回答。
最明显的解决方案是
"FileNotFound".replace(/[A-Z]/g, a => " " + a).trim()
一个更具教育意义的解决方案 (imo) 是这样的:
"FileNotFound".split(/(?=[A-Z])/g).join(" ")
?= 的意思是“前瞻”,所以“匹配空字符串,只要它后面跟着一个大写字母”。此解决方案可能较慢,但不会干扰前面任何预先存在的空白,并且更容易概括。
【讨论】:
更整洁的解决方案:
console.log("FileNotFound".replace(/([A-Z][a-z]+)(?=[A-Z])/g, "$1 "));
【讨论】:
"File1NotFound".replace(/([A-Z][a-z0-9]+)(?=[A-Z])/g, "$1 ")