我试图制作一个与此函数完全相同的算法:var string= string.split(' ').join('');
因此,如果我有以下字符串:Hello how are you
,则变为Hellohowareyou
我不想使用.replace
或regex
或.split
但是,该算法似乎没有对字符串进行任何更改:
var x = prompt("Enter String");
for (var i=0; i<=x.length;i++) {
if (x[i] == " ") {
x[i] = "";
}
}
alert(x);
答案 0 :(得分:3)
您的代码无效,因为可能是字符串,类似于getter
,索引方法(setter
)没有x[0] = "w"
。您不能将字符串视为数组。它是一种特殊形式的对象(immutable object),可以通过索引访问,但严格来说,这种方法中没有setter。
您可以通过更改如下所示修改代码,
var x = prompt("Enter sum or 'e' to Exit");
var modified = "";
for (var i=0; i<x.length;i++) {
if (x[i] != " ") {
modified += x[i];
}
}
alert(modified);
您可以使用regex
,
var x = prompt("Enter sum or 'e' to Exit");
x = x.replace(/\s/g,"");
答案 1 :(得分:3)
迭代字符串复制字符,跳过空格。您的代码不起作用,因为字符串是不可变的,因此您不能通过执行x[i] = 'c'
来更改字符串中的字符。
请参阅Are JavaScript strings immutable? Do I need a "string builder" in JavaScript?
var string = 'Hello How are you';
var noSpaces = '';
for (var i = 0; i < string.length; i++) {
if (string.charAt(i) != ' ' ) {
noSpaces += string.charAt(i);
}
}
alert(noSpaces);
&#13;
答案 2 :(得分:2)
在您的代码中,您只需比较该值并尝试使用相同的变量进行替换,但无法将其替换为变量,只需将您的值与新变量一起存储,如下所示
var x = prompt("Enter sum or 'e' to Exit");
var v='';
for (var i=0; i<x.length;i++) {
if (x[i] != " ") {
v +=x[i];
}
}
alert(v);
答案 3 :(得分:2)
另一种更新变量x
并且不使用其他变量的方法是使用反向for
循环并使用slice
来获取{{1}之前和之后的字符串}: -
i
&#13;
或者,使用var x = prompt("Enter String");
for (var i = x.length; i--;) {
if (x[i] == " ") {
x = x.slice(0, i) + x.slice(i + 1, x.length);
}
}
alert(x);
的反向for
循环: -
substr
&#13;
答案 4 :(得分:-2)
嗨,
请检查以下代码。它冗长。但其他人可以帮助缩短它。检查输出
var x = prompt("Hello how are you");
y = ''
flag = false
for (var i=0; i<x.length;i++) {
if (x[i] == " ") {
flag= true
}
else {
if (flag == true) {
y += ' '
y += x[i]
flag = false
}
else {
y += x[i]
}
}
}
alert(y)
输出是:&#34;你好,你好&#34;
代码只是在x [i]&amp;中获得空格时设置一个标志当你得到下一个角色时,它只是添加单个空格而不是空格&amp;将下一个字符添加到输出字符串&amp;再次将flag设置为false。