如何删除字符串中多余的空格?

问题描述 投票:0回答:12

什么函数可以使用 javascript 将

this contains       spaces
转换为
this contains spaces

我已经尝试过以下操作,使用类似的SO问题,但无法让它发挥作用。

var string = " this contains   spaces ";

newString = string.replace(/\s+/g,''); // "thiscontainsspaces"
newString = string.replace(/ +/g,'');  //"thiscontainsspaces"

有没有一个简单的纯javascript方法来完成这个?

javascript regex trim
12个回答
185
投票

你已经很接近了。

请记住,

replace
用第二个参数替换找到的文本。所以:

newString = string.replace(/\s+/g,''); // "thiscontainsspaces"

找到任意数量的连续空格并删除它们。尝试用单个空格替换它们!

newString = string.replace(/\s+/g,' ').trim();

25
投票
string.replace(/\s+/g, ' ').trim()

17
投票

尝试这个,这将替换字符串中的 2 个或 2 个以上空格。

const string = " this contains   spaces ";    
string.replace(/\s{2,}/g, ' ').trim() 
输出
this contains spaces

9
投票

我想出了一种方法,但很好奇是否有更好的方法......

string.replace(/\s+/g,' ').trim()

6
投票

我遇到了同样的问题,我是这样解决的

Text = Text.replace(/ {1,}/g," ");
Text = Text.trim();

4
投票

我认为图像总是解释它很好,基本上你所看到的正则表达式

\s
在正则表达式中的含义是空格。
+
表示它可以是倍数。
/g
符号表示它在全局范围内查找(默认情况下替换查找第一个出现的情况,而无需添加
/g
)。并且修剪将删除最后一个和第一个空格(如果存在)。

最后,要删除多余的空格,您将需要以下代码:

newString = string.replace(/\s+/g,' ').trim();


3
投票

我们可以使用以下方法来删除句子/单词中的多余空格。

sentence.split(' ').filter(word => word).join(' ')

0
投票

原始 Javascript 解决方案:

var str = '  k                                     g  alok   deshwal';
function removeMoreThanOneSpace() {
    String.prototype.removeSpaceByLength=function(index, length) {
        console.log("in remove", this.substr(0, index));
        return this.substr(0, index) + this.substr(length);
    }
    for(let i  = 0; i < str.length-1; i++) {
        if(str[i] === " " && str[i+1] === " ") {
            str = str.removeSpaceByLength(i, i+1);
            i = i-1;
        }
    }
    return str;
}
console.log(removeMoreThanOneSpace(str));

0
投票
var s=" i am a student "
var r='';
console.log(s);
var i,j;
j=0;
for(k=0; s[k]!=undefined; k++);// to calculate the length of a string

for(i=0;i<k;i++){
if(s[i]!==' '){
for(;s[i]!==' ';i++){
r+=s[i];
}
r+=' ';
}
}
console.log(r);

0
投票

// Here my solution

const trimString = value => {

  const allStringElementsToArray = value.split(''); 
  // transform "abcd efgh" to ['a', 'b', 'c', 'd',' ','e', 'f','g','h']

  const allElementsSanitized = allStringElementsToArray.map(e => e.trim());
  // Remove all blank spaces from array

  const finalValue = allElementsSanitized.join('');
  // Transform the sanitized array ['a','b','c','d','e','f','g','h'] to 'abcdefgh'

  return finalValue;
}


0
投票

我尝试过正则表达式来解决这个问题:

let temp=text.replace(/\s{2,}/g, ' ').trim() 
console.log(temp);

input="请按时完成作业"

output="请按时完成作业"


-1
投票
//This code remove extra spaces with out using "string objectives" 
      s="                 This Is   Working On      Functions  "
            console.log(s)
            final=""; 
            res='';
        function result(s) {
         for(var i=0;i<s.length;i++)
            {    
                if(!(final==""&&s[i]==" ")&&!(s[i]===" "&& s[i+1] ===" ")){ 
              final+=s[i]; 
               }
            }
           
            console.log(final);
        }
        result(s);
        
© www.soinside.com 2019 - 2024. All rights reserved.