如何在单独的行中打印每个单词。除第一个单词外,每个单词均大写

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)

adi*_*iga 5

您可以使用正则表达式[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)