dav*_*oon 4 javascript string algorithm
我正在尝试创建一个在新行上打印每个单词的函数。给定的参数是一个字符串,该字符串的第一个单词(即“ 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)
})
}
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式[A-Z]和replace每个带有\n前缀的大写字母
const separateWords = str => str.replace(/[A-Z]/g, m => '\n' + m)
console.log(separateWords('helloMyNameIsMark'))Run Code Online (Sandbox Code Playgroud)
或者,您可以(?=[A-Z])对split每个大写字母使用超前查询来获取单词数组。然后遍历数组以记录每个单词:
const separateWords = str => str.split(/(?=[A-Z])/g)
separateWords('helloMyNameIsMark').forEach(w => console.log(w))Run Code Online (Sandbox Code Playgroud)