我接受输入字符串"ZpglnRxqenU"
,并且必须在该视图中返回字符串
"Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu"
我几乎完成了,但是我不知道为什么数组元素中的第一个字母不会变为大写。
function accum(s) {
let str = s.toLowerCase();
let arr = [];
for(let i=0; i<str.length;i++){
arr.push(str[i].repeat(i+1));
arr[i][0].toUpperCase();
}
return arr.join('-');
}
console.log(accum("ZpglnRxqenU"));
// must be "Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu"
答案 0 :(得分:2)
字符串是不可变的,仅使用.toUpperCase()不会更新现有字符串,为此,您可以尝试下面的代码
mappend
答案 1 :(得分:1)
Javascript中的字符串是不可变的,因此如果要进行转换,则必须为arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1)
。
toUpperCase()
仅返回字符,它不会操纵被调用的字符串。
String.prototype
上的任何其他方法(例如String.replace()
。
要更加清楚:在Javascript中更改包含字符串的变量的唯一方法是为该变量分配新值。
function accum(s) {
let str = s.toLowerCase();
let arr = [];
for(let i=0; i<str.length; i++){
arr.push(str[i].repeat(i+1));
arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1);
}
return arr.join('-');
}
console.log(accum("ZpglnRxqenU"));
答案 2 :(得分:1)
您可以这样操作,并删除不必要的Traceback (most recent call last):
File "<ipython-input-30-b2a4f400dbe9>", line 1, in <module>
runfile('C:/Program Files (x86)/WinPython-64bit-3.3.5.9/python-3.3.5.amd64/Scripts/orbit/3dnbody_2dprojection.py', wdir='C:/Program Files (x86)/WinPython-64bit-3.3.5.9/python-3.3.5.amd64/Scripts/orbit')
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Program Files (x86)/WinPython-64bit-3.3.5.9/python-3.3.5.amd64/Scripts/orbit/3dnbody_2dprojection.py", line 56, in <module>
ani=FuncAnimation(fig,animate,frames=1000,interval=1,blit=False)
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\matplotlib\animation.py", line 1067, in __init__
TimedAnimation.__init__(self, fig, **kwargs)
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\matplotlib\animation.py", line 913, in __init__
*args, **kwargs)
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\matplotlib\animation.py", line 591, in __init__
self._init_draw()
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\matplotlib\animation.py", line 1092, in _init_draw
self._draw_frame(next(self.new_frame_seq()))
File "C:\Program Files (x86)\WinPython-64bit-3.3.5.9\python-3.3.5.amd64\lib\site-packages\matplotlib\animation.py", line 1106, in _draw_frame
self._drawn_artists = self._func(framedata, *self._args)
File "C:/Program Files (x86)/WinPython-64bit-3.3.5.9/python-3.3.5.amd64/Scripts/orbit/3dnbody_2dprojection.py", line 54, in animate
planets._offsets3d(positions[:,0],positions[:,1],positions[:2])
TypeError: 'tuple' object is not callable
行
F(2)
答案 3 :(得分:0)
字符串是不可变的。使用toUpperCase()不会更改原始字符串。取而代之的是,它将返回一个新字符串。您必须将此新字符串保存在所需的位置:
arr[i][0] = arr[i][0].toUpperCase();
答案 4 :(得分:0)
您可以利用Array.from
的功能,以字符为单位获取字符串,并将第一个大写字符和重复的字符映射为新字符串。
最后,将所有项目连接到单个字符串。
function accum(s) {
return Array
.from(s.toLowerCase(), (c, i) => c.toUpperCase() + c.repeat(i))
.join('-');
}
console.log(accum("ZpglnRxqenU"));