我正在尝试创建一个将每个单词打印在新行上的函数。给定的参数是一个字符串,其中的单词不是由空格分隔而是大写,除了第一个单词,即“helloMyNameIsMark”。我有一些有用的东西,但想知道是否有更好的方法在 javaScript 中执行此操作。
separateWords = (string) => {
const letters = string.split('');
let word = "";
const words = letters.reduce((acc, letter, idx) => {
if (letter === letter.toUpperCase()) {
acc.push(word);
word = "";
word = word.concat(letter);
} else if (idx === letters.length - 1) {
word = word.concat(letter);
acc.push(word);
} else {
word = word.concat(letter)
}
return acc
}, []);
words.forEach(word => {
console.log(word)
})
}
最佳答案
您可以使用正则表达式 [A-Z]
和 replace
每个带有 \n
前缀的大写字母
const separateWords = str => str.replace(/[A-Z]/g, m => '\n' + m)
console.log(separateWords('helloMyNameIsMark'))
或者您可以使用前瞻性 (?=[A-Z])
在每个大写字母处拆分
以获得单词数组。然后遍历数组以记录每个单词:
const separateWords = str => str.split(/(?=[A-Z])/g)
separateWords('helloMyNameIsMark').forEach(w => console.log(w))
关于javascript - 如何在单独的行中打印每个单词。除第一个单词外,每个单词都大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56840971/