繁体   English   中英

手动删除String中的空格 - JavaScript

[英]Manually remove whitespace in String - JavaScript

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

所以,如果我有以下字符串: Hello how are you它成为Hellohowareyou

我不想使用.replaceregex.split

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

var x = prompt("Enter String");

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

alert(x);

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

迭代字符串复制字符,跳过空格。 您的代码不起作用,因为字符串是不可变的,因此您不能通过执行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); 

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

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循环并使用slice来获取i :之前和之后的字符串:

 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 : -

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

嘿,

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

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM