如何使用JavaScript从字符串中删除空格?

时间:2011-05-11 11:04:12

标签: javascript text

如何删除字符串中的空格?例如:

输入:

'/var/www/site/Brand new document.docx'

输出:

'/var/www/site/Brandnewdocument.docx'

14 个答案:

答案 0 :(得分:978)

此?

str = str.replace(/\s/g, '');

实施例

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );


更新:基于this question,即:

str = str.replace(/\s+/g, '');

是一个更好的解决方案。它产生相同的结果,但它的速度更快。

正则表达式

\s是“whitespace”的正则表达式,g是“全局”标志,意味着匹配ALL \s(空格)。

可以找到+的一个很好的解释here

作为旁注,您可以将单引号之间的内容替换为您想要的任何内容,因此您可以将空格替换为任何其他字符串。

答案 1 :(得分:53)

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

两种方法!

答案 2 :(得分:17)

关注@rsplak回答:实际上,使用分割/连接方式比使用regexp更快。查看效果test case

所以

var result = text.split(' ').join('')

运行得更快

var result = text.replace(/\s+/g, '')

在小文本上,这是不相关的,但对于时间很重要的情况,例如在文本分析器中,尤其是在与用户交互时,这很重要。

另一方面,\s+处理更多种类的空格字符。在\n\t中,它还匹配\u00a0个字符,这是 使用textDomNode.nodeValue获取文字时的内容。

所以我认为这里的结论可以如下:如果你只需要替换 spaces ' ',请使用split / join。如果符号类可以有不同的符号 - 请使用replace(/\s+/g, '')

答案 3 :(得分:7)

var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

Click here for working example

答案 4 :(得分:6)

最短和最快str.replace(/ /g, '');


基准:

这是我的结果-(2018.07.13)Chrome 67.0.3396(64位),Safari 11.0.3(13604.5.6),Firefox 59.0.2(64位)上的MacOs High Sierra 10.13.3):

短字符串

类似于OP问题中的示例的短字符串

enter image description here

所有浏览器上最快的解决方案是/ /g(regexp1a)-Chrome 17.7M(操作/秒),Safari 10.1M,Firefox 8.8M。所有浏览器中最慢的是split-join解决方案。将更改为\s或添加+i以进行正则表达式会减慢处理速度。

长字符串

对于大约300万个字符的字符串,结果是:

  • regexp1a :Safari 50.14 ops / sec,Firefox 18.57,Chrome 8.95
  • regexp2b :Safari 38.39,Firefox 19.45,Chrome 9.26
  • 拆分连接:Firefox 26.41,Safari 23.10,Chrome 7.98,

您可以在计算机上运行它:https://jsperf.com/remove-string-spaces/1

答案 5 :(得分:2)

var fbScore = 0
func getFBScore(){
    if(FBSDKAccessToken.currentAccessToken() != nil){
        var request = FBSDKGraphRequest(graphPath: "me/scores?fields=score", parameters: nil)
        request.startWithCompletionHandler({(connection, result, error) -> Void in
            if(error != nil){
                println("facebook score reading failed with error \(error)")

            } else {
                println("facebook score reading result \(result)")
                let fbResult = result as! NSDictionary
                //crash on below line
                let data = fbResult.objectForKey("data") as! NSMutableArray
                if(data.count == 0){
                    self.postFBScore(0)
                } else {
                    if let mScore = data[0].objectForKey("score") as? Int{
                        self.fbScore = mScore
                        println("facebook score is \(self.fbScore)")
                    } else{
                        self.postFBScore(0)
                    }

                }
            }

        })
    }
}

注意:虽然使用'g'或'gi'来删除空格,但两者的行为都相同。

如果我们在替换函数中使用'g',它将检查完全匹配。但如果我们使用'gi',它会忽略区分大小写。

供参考click here

答案 6 :(得分:0)

简便方法

   someString.replace(' ', '');

答案 7 :(得分:0)

使用 replaceAll 似乎是最简单最干净的方法。 (我不能保证最快)

'/var/www/site/Brand new document.docx'.replaceAll(' ', '')

docs

<块引用>

replaceAll() 方法返回一个新字符串,其中所有匹配的模式都被替换。模式可以是字符串或正则表达式,替换可以是字符串或每次匹配时调用的函数。

答案 8 :(得分:0)

没有正则表达式,它工作正常。

input = input.replace(' ', '');

为什么不简单地使用这个!? 这更快更简单!

答案 9 :(得分:0)

你还使用了JS最新的字符串方法之一:replaceAll

'/var/www/site/Brand new document.docx'.replaceAll(' ', '');

答案 10 :(得分:-1)

  

Regex + Replace()

尽管regex的速度可能较慢,但在许多用例中,开发人员仅一次操纵几个字符串,因此考虑速度是无关紧要的。尽管/ /比/ \ s /快,但使用'\ s'可能更清楚地说明了另一个开发人员正在发生的事情。

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
  

Split()+ Join()

使用Split + Join可以进一步对字符串进行链式操作。

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";

答案 11 :(得分:-1)

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s\/g, '') );


----------

答案 12 :(得分:-1)

your_string = 'Hello world';
words_array = your_tring.split(' ');

string_without_space = '';

for(i=0; i<words_array.length; i++){
    new_text += words_array[i]; 
}

console.log("The new word:" new_text);

输出:

你好世界

答案 13 :(得分:-2)

尽管可以使用正则表达式删除空格,但是有一个简单的函数可以删除所有称为.trim();的空格:

var str = "abr a cadab ra";
str = str.trim();
//str = "abracadabra"