Hoe verwijder je spaties uit een tekenreeks met JavaScript?

Hoe verwijder ik spaties in een string? Bijvoorbeeld:

Invoer:

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

Uitvoer:

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

Antwoord 1, autoriteit 100%

Dit?

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

Voorbeeld

var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );

Antwoord 2, autoriteit 6%

var a = b = " /var/www/site/Brand new   document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

Antwoord 3, autoriteit 4%

KORTSTE en SNELSTE: str.replace(/ /g, '');


Benchmark:

Hier mijn resultaten – (2018.07.13) MacOs High Sierra 10.13.3 op Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)):

KORTE tekenreeksen

Korte reeks vergelijkbaar met voorbeelden uit OP-vraag

voer hier de afbeeldingsbeschrijving in

De snelste oplossing voor alle browsers is / /g(regexp1a) – Chrome 17.7M (bediening/sec), Safari 10.1M, Firefox 8.8M. De langzaamste voor alle browsers was de split-join-oplossing. Verander in \sof voeg +of itoe aan regexp vertraagt ​​de verwerking.

LANGE snaren

Voor tekenreeksen van ongeveer ~3 miljoen tekens zijn de resultaten:

  • regexp1a: Safari 50.14 ops/sec, Firefox 18.57, Chrome 8.95
  • regexp2b: Safari 38.39, Firefox 19.45, Chrome 9.26
  • split-join: Firefox 26.41, Safari 23.10, Chrome 7.98,

Je kunt het op je computer uitvoeren: https://jsperf.com/remove-string- spaties/1


Antwoord 4, autoriteit 2%

Volgend op het antwoord van @rsplak: eigenlijk is het gebruik van de split/join-manier sneller dan het gebruik van regexp. Bekijk de prestatie testcase

Dus

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

werkt sneller dan

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

Voor kleine teksten is dit niet relevant, maar voor gevallen waarin tijd belangrijk is, b.v. in tekstanalisten, vooral bij interactie met gebruikers, is dat belangrijk.


Aan de andere kant verwerkt \s+een grotere verscheidenheid aan spatietekens. Naast \nen \tkomt het ook overeen met het teken \u00a0, en dat is wat  wordt ingeleverd bij het ophalen van tekst met textDomNode.nodeValue.

Dus ik denk dat de conclusie hier als volgt kan worden getrokken: als je alleen spaties' 'hoeft te vervangen, gebruik dan split/join. Als er verschillende symbolen van symboolklassekunnen zijn, gebruik dan replace(/\s+/g, '')


Antwoord 5

var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);

Klik hier voor een werkend voorbeeld


Antwoord 6

 var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

Opmerking: hoewel je ‘g’ of ‘gi’ gebruikt voor het verwijderen van spaties, gedragen beide zich hetzelfde.

Als we ‘g’ gebruiken in de functie ‘vervangen’, wordt gecontroleerd op de exacte overeenkomst. maar als we ‘gi’ gebruiken, negeert het de hoofdlettergevoeligheid.

voor referentie klik hier.


Antwoord 7

Regex + Vervang()

Hoewel regex langzamer kan zijn, manipuleert de ontwikkelaar in veel gevallen maar een paar strings tegelijk, dus snelheid is niet relevant. Ook al is / / sneller dan /\s/, met de ‘\s’ legt een andere ontwikkelaar misschien duidelijker uit wat er aan de hand is.

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

Split() + Join()

Het gebruik van Split + Join maakt verdere geketende manipulatie van de string mogelijk.

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

Antwoord 8

eenvoudige manier

  someString.replace(/ /g, '');

Antwoord 9

Het gebruik van replaceAlllijkt de eenvoudigste, schoonste manier. (Ik kan niet instaan ​​voor de snelste)

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

Zie docs.

De methode ReplaceAll() retourneert een nieuwe tekenreeks waarbij alle overeenkomsten van een patroon zijn vervangen door een vervanging. Het patroon kan een tekenreeks of een RegExp zijn, en de vervanging kan een tekenreeks of een functie zijn die voor elke overeenkomst moet worden aangeroepen.


Antwoord 10

Zonder regexpwerkt het prima.

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

Waarom gebruik je niet gewoon dit !?
Dit is sneller zo simpel!


Antwoord 11

U gebruikt ook een van de nieuwste tekenreeksmethoden van JS: ReplaceAll

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

Antwoord 12

var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s\/g, '') );
----------

Antwoord 13

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

De uitvoer:

Hallo Wereld

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four × 4 =

Other episodes