将空格插入索引中的字符串中

问题描述 投票:0回答:4

我正在尝试解决此Codewars问题。

任务

在此简单的Kata中,您的任务是创建一个将字符串变成墨西哥波的函数。您将被传递一个字符串,并且必须在一个数组中返回该字符串,其中大写字母是一个站起来的人。

规则

  1. 输入字符串将始终为小写字母,但可能为空。
  2. 如果字符串中的字符为空格,则将其作为空座位通过。例wave(“ hello”)=> [“ Hello”,“ hEllo”,“ heLlo”,“ helLo”,“ hellO”]

My code so far is hosted on this repl.it

我的思考过程如下:

  1. 将参数转换为数组
  2. 在索引处处理数组的每个索引,然后重新调整先前的索引以形成波动图
  3. 将数组转换为字符串
  4. 将空格登录到控制台并重新启动循环之前,请重新插入空格

我很困,我的心在如何使用上苦恼

for(var j = 0; j < indexSpaceNumber.length; j++){ //join and add in the spaces at their former index before returning string strToArray[indexSpaceNumber[j]].slice(0, " "); }

将空格插入字符串。

如果有任何指导或提示,将不胜感激。我觉得我已经很近了,但是很沮丧地很远。

javascript arrays string split slice
4个回答
2
投票

主要想法是:

  1. 重复字符
  2. 用大写字母替换原始字符串中的字符

您可以使用Array.from()将字符串转换为数组,并将每个项目映射到新字符串。如果字符是空格,则返回错误(示例中为空字符串)。创建数组后,过滤所有虚假值:

Array.from()

0
投票

遍历字符串中的每个字符并构建const wave = str => Array.from(str, (c,i) => // convert the string to an array // replace the character with an uppercase version in the original string c === ' ' ? '' : `${str.substring(0, i)}${c.toUpperCase()}${str.substring(i + 1)}` ).filter(c => c) const result = wave("hello") console.log(result)

Slice str from start till current char + current char to upper case + Slice str from current char to end

0
投票

对于带空格的字符串

const wave = str => {
  const res = [];
  for (let i = 0; i < str.length; i++) {
    res.push(`${str.slice(0, i)}${str[i].toUpperCase()}${str.slice(i + 1)}}`);
  }
  return res;
};

console.log(wave("hi my name is rylan"));

0
投票

我将递归;)

您知道对于长度为[[n的字符串,您需要一个长度相同的数组。那是你的退出条件。

您可以在每次迭代时使用数组的长度来计算下一个字符串的形状:

function wave(str) { let res = [] str.toLowerCase().split('').forEach((v, i) => { if(v == ' ') return; res.push( str.substr(0, i) + v.toUpperCase() + str.substr(i + 1) ) }); return res } console.log(wave("hello hello"))

 

hello [] [Hello] 0: uppercase 1st char and append hello [Hello] [Hello hEllo] 1: uppercase 2nd char and append hello [Hello hEllo] [Hello hEllo heLlo] 2: uppercase 3rd char and append ...
© www.soinside.com 2019 - 2024. All rights reserved.