我遇到了以下 javaScript 问题。
问题: 给你一个字符串 s,它应该是一个句子。然而,有人忘记在不同的单词之间添加空格,并且出于某种原因他们将每个单词的第一个字母大写。进行以下修改后返回该句子:
在单词之间放置一个空格。 将大写字母转换为小写字母。
示例
“CodefightsIsAwesome”,输出应该是“codefights is Awesome”;
“Hello”,输出应该是“hello”。
我当前的代码是:
现在,我的第二个 for 循环只是手动从字符串中切下各个部分。 如何使其动态化并在大写字符串前面插入“空格”?
最佳答案
您可以使用String.prototype.match()
与 RegExp
/[A-Z][^A-Z]*/g
匹配A-Z
后跟一个或多个不是 A-Z
的字符,或字符串末尾的字符;链条Array.prototype.map()
调用.toLowerCase()
在匹配的单词上,.join()
参数 " "
在结果字符串的匹配之间包含空格字符。
var str = "CodefightsIsAwesome";
var res = str.match(/[A-Z][^A-Z]*/g).map(word => word.toLowerCase()).join(" ");
console.log(res);
或者,按照@FissureKing的建议,您可以使用 String.prototype.repalce()
与 .trim()
和.toLowerCase()
链式
var str = "CodefightsIsAwesome";
var res = str.replace(/[A-Z][^A-Z]*/g, word => word + ' ').trim().toLowerCase();
console.log(res);
关于JavaScript:修改句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592717/