手动删除String-JavaScript中的空白

手动删除String-JavaScript中的空白,javascript,Javascript,我试图制作一个算法,它将执行与此函数相同的操作:var string=string.split(“”).join(“”) 因此,如果我有以下字符串:你好它会变成你好 我不想使用.replace或regex或.split 但是,该算法似乎没有对字符串进行任何更改: var x = prompt("Enter String"); for (var i=0; i<=x.length;i++) { if (x[i] == " ") { x[i] = "";

我试图制作一个算法,它将执行与此函数相同的操作:
var string=string.split(“”).join(“”)

因此,如果我有以下字符串:
你好
它会变成
你好

我不想使用
.replace
regex
.split

但是,该算法似乎没有对字符串进行任何更改:

var x = prompt("Enter String");

for (var i=0; i<=x.length;i++) {
     if (x[i] == " ") {
         x[i] = "";
     }
 }

alert(x);
var x=prompt(“输入字符串”);

对于(var i=0;i您的代码不起作用,因为对于字符串,类似于<代码>吸收器< /代码>,对于索引方法没有<代码> SETTER <代码>(<代码> x(0)=“W”<代码>)。您不能将字符串视为数组。它是可以用索引访问的特殊对象()形式,但严格地说,在这种方法中没有设置器。 您可以通过如下更改来修复代码

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);

在您的代码中,您只需比较值并尝试用相同的变量替换,但不可能用变量替换相同的值,只需使用新变量存储您的值,如下所示

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);
var x=提示(“输入总和或“e”退出”);
var v=“”;

对于(var i=0;i另一种更新变量
x
且不使用另一个变量的方法是对
循环使用反向
,并使用
slice
获取
i
前后的字符串:-

var x=prompt(“输入字符串”);
对于(var i=x.length;i--;){
如果(x[i]==“”){
x=x.切片(0,i)+x.切片(i+1,x.长度);
}
}
警报(x);
Hie

请检查下面的代码。它很长。但其他人可以帮助缩短。检查输出

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)
var x=prompt(“你好”);
y=''
flag=false

对于(var i=0;i迭代字符串复制字符,跳过空格。您的代码不起作用,因为字符串是不可变的,所以您不能通过执行
x[i]=“c”
来更改字符串中的字符

var string='你好';
var noSpaces='';
对于(变量i=0;i
警告(noSpaces);
编辑后(不希望使用
替换
拆分
或正则表达式),我重新提出了这个问题。出于兴趣,为什么不使用正确的工具来完成这项工作?这是不是专门告诉你避免使用这些方法的家庭作业?@jamice是的,这是我为自己做的家庭作业-测试字符串和循环的知识你必须通过做I你好
它变成了
你好
你好
你好
OP想删除空格,但不是所有空格。我知道这不是聪明的短代码,但它很有效。@JuanMendes-我说的和你刚才说的一样,基本上是说“它更新了x,并且没有建立新的值。”“这充其量只是误导,而实际上完全是错误的worst@JuanMendes这就是我的意思“OP只使用一个变量”@Jamiec我已经更新了解释。很抱歉造成混淆。投票结果是,这似乎是最好的解决方案,不过对于较老的浏览器,请参见:@Roberto是的,自从IE停止支持IE<10以来,我就不再关心它了。不过,使用
charAt()仍然有一定的价值
仍然是因为使用括号确实会让你觉得你可以设置它。我们中的一些人仍然必须支持在IE兼容模式下运行的企业应用程序。通常是IE7,但有时甚至是IE5。不幸的是,我认为这不会很快消失,因为隐藏这些大型应用程序的成本太高(无论如何,这个评论不是有意否定的。@Roberto也不是我的,我很高兴我不用担心,这是一个完全正确的观点。
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)