手动删除String中的空格 - JavaScript

时间:2016-03-02 13:44:17

标签: javascript

我试图制作一个与此函数完全相同的算法:var string= string.split(' ').join('');

因此,如果我有以下字符串:Hello how are you,则变为Hellohowareyou

我不想使用.replaceregex.split

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

var x = prompt("Enter String");

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

alert(x);

5 个答案:

答案 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?

&#13;
&#13;
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;
&#13;
&#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);

以下是链接https://jsfiddle.net/rqL3cvog/

答案 3 :(得分:2)

另一种更新变量x并且不使用其他变量的方法是使用反向for循环并使用slice来获取{{1}之前和之后的字符串}: -

&#13;
&#13;
i
&#13;
&#13;
&#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循环: -

&#13;
&#13;
substr
&#13;
&#13;
&#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。