首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当字符串包含数组中的单词时,向字符串添加空格

当字符串包含数组中的单词时,向字符串添加空格
EN

Stack Overflow用户
提问于 2019-03-05 04:14:12
回答 1查看 39关注 0票数 1

我有一个函数,我在其中迭代给定的字符串,交替每个字符的大小写,并将其连接到变量alt

为了正确地遍历它,我从原始字符串中删除了空格。但我需要将它们添加回函数的末尾。

代码语言:javascript
复制
function alternatingCaps(str) { // 'hello world'
  let words = str.toLowerCase().split(' '); // ['hello','world']
  str       = words.join(''); // 'helloworld'
  let alt = '';
  for(let i = 0; i < str.length; i++) {
    if(i % 2 === 0)
      alt += str[i].toUpperCase();
    else
      alt += str[i].toLowerCase();
  }
  return alt;
} 

console.log(alternatingCaps('hello world'));
/* Output: "HeLlOwOrLd"
   Wanted output: "HeLlO wOrLd" */

一旦alt包含一个字符串作为值包含在words数组中,我想在单词的末尾添加一个空格。

这是我的尝试:

代码语言:javascript
复制
 words.forEach(function(word) {
  if(alt.toLowerCase().includes(word) && word[word.length - 1] === alt[i].toLowerCase())
    alt += ' ';
});

它检查alt字符串中是否存在words数组中的任何单词,以及字符串的当前字符迭代是否对应于单词中的最后一个字母。如果是这样,它会在字符串中添加一个空格。

但这并不能像预期的那样工作。

代码语言:javascript
复制
> Output: "HeLlO wOr Ld"
> Wanted output: "HeLlO wOrLd"

我也认为这会导致重复字母的问题。我怎样才能实现我的目标?

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 04:21:02

你不应该加入你的言辞。将它们作为单词数组中的单独元素,然后您可以遍历该数组,对每个元素应用您的函数。

代码语言:javascript
复制
function alternatingCaps(str) { // 'hello world'
  let words = str.toLowerCase().split(' '); // ['hello','world']

  const alts = words.map(word => capitalizeEvens(word));
  return alts.join(' ');

  function capitalizeEvens(word) {
    let alt = '';
    for(let i = 0; i < word.length; i++) {
      if(i % 2 === 0)
        alt += word[i].toUpperCase();
      else
        alt += word[i].toLowerCase();
    }
    return alt;
  } 

console.log(alternatingCaps('hello world'));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54990858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档