手动删除字符串 - JavaScript 中的空格

Manually remove whitespace in String - JavaScript

本文关键字:空格 JavaScript 删除 字符串      更新时间:2023-09-26

我试图制作一种算法,该算法将执行与此函数相同的操作: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);

遍历字符串复制字符,跳过空格。您的代码不起作用,因为字符串是不可变的,因此您无法通过执行x[i] = 'c'来更改字符串中的字符。

请参阅 JavaScript 字符串是不可变的吗?我需要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);

您的代码不起作用,因为对于字符串,类似于getter,索引方法(x[0] = "w")没有setter。不能将字符串视为数组。它是一种特殊形式的对象(不可变对象),可以使用索引访问,但严格来说,这种方法中没有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,"");

在您的代码中,您只需比较值并尝试用相同的变量替换,但无法用变量替换相同的值,只是将您的值与新变量存储,如下所示

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/

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

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

或者,具有substr的反向for循环:-

var x = prompt("Enter String");
for (var i = x.length; i--;) {
  if (x[i] == " ") {
    x = x.substr(0, i) + x.substr(i + 1);
  }
}
alert(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)

输出为:"你好,你好吗"

当你在x[i]中得到一个空格时,代码只是设置一个标志,当你得到下一个字符时,它只是添加一个空格而不是空格,将下一个字符添加到输出字符串中,并再次将标志设置为false。