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

标签 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)
  })
}

最佳答案

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

相关文章:

javascript - 选择其他 radio 时显示/隐藏文本区域 - jQuery 事件未触发

c - 修改c中字符串的值

javascript - 如何区分数字串和字符串?

algorithm - 线性时间图算法

ruby - 组合的递归函数

javascript - 即使聚焦并且 CSS 规则生效,HTML 按钮也不会单击

javascript - 如何在 WebAudioApi 中配置 MediaElementAudioSourceNode?

javascript - jQuery 只在主表中选择 tr,而不是在嵌套表中

java - 问题是 while 循环没有以 Java 中的 system.in 获取输入段落结束

算法复杂度性能和空间