it-swarm.com.de

Zeichenfolge in JavaScript zuschneiden?

Wie schneide ich eine Zeichenfolge in JavaScript?

1259
Vinod

Alle Browser seit IE9 + haben trim() .

Für diejenigen Browser, die trim() nicht unterstützen, können Sie diese Polyfill aus MDN verwenden:

if (!String.prototype.trim) {
    (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

Sieh dir das an:

String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};

String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};

String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};
865

Das Beschneiden von jQuery ist praktisch, wenn Sie dieses Framework bereits verwenden. 

$.trim('  your string   ');

Ich neige dazu, jQuery häufig zu verwenden, daher ist es für mich natürlich, Strings damit zu trimmen. Aber ist es möglich, dass es da draußen gegen jQuery einen Rückschlag gibt? :) 

477
barneytron

Obwohl es einige richtige Antworten gibt, ist zu beachten, dass das String-Objekt in JavaScript ab ECMAScript 5 eine native .trim()-Methode hat. Idealerweise sollte also jeder Versuch, die Trimmmethode zu prototypisieren, wirklich prüfen, ob sie bereits vorher existiert.

if(!String.prototype.trim){  
  String.prototype.trim = function(){  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
}

Nativ hinzugefügt in: JavaScript 1.8.1/ECMAScript 5

So unterstützt in:

Firefox: 3.5+

Safari: 5+

Internet Explorer: IE9 + (nur im Standardmodus!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5 -support-and-more.aspx

Chrome: 5+

Oper: 10.5+

ECMAScript 5-Supporttabelle: http://kangax.github.com/es5-compat-table/

162
scunliffe

Es gibt viele Implementierungen die verwendet werden können. Das offensichtlichste scheint etwas zu sein:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
};

" foo bar ".trim();  // "foo bar"
126
Gumbo

Einfache Version hier Was ist eine allgemeine Funktion zum JavaScript-Trimmen?

function trim(str) {
        return str.replace(/^\s+|\s+$/g,"");
}
46
Mark Davidson

Ich weiß, dass diese Frage vor drei Jahren gestellt wurde. Jetzt wurde String.trim() in JavaScript nativ hinzugefügt. Für eine Instanz können Sie direkt wie folgt trimmen: 

document.getElementById("id").value.trim();
28
Vijin Paulraj

Flagrant Badassery verfügt über 11 verschiedene Zierleisten mit Benchmark-Informationen:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

Nicht überraschend regexp-basiert sind langsamer als herkömmliche Schleifen.


Hier ist mein persönlicher. Dieser Code ist alt! Ich habe es für JavaScript1.1 und Netscape 3 geschrieben und wurde seitdem nur geringfügig aktualisiert. (Original verwendet String.charAt)

/**
 *  Trim string. Actually trims all control characters.
 *  Ignores fancy Unicode spaces. Forces to string.
 */
function trim(str) {
    str = str.toString();
    var begin = 0;
    var end = str.length - 1;
    while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
    while (end > begin && str.charCodeAt(end) < 33) { --end; }
    return str.substr(begin, end - begin + 1);
}
20
Tero

Wenn Sie jQuery verwenden, verwenden Sie die Funktion jQuery.trim(). Zum Beispiel:

if( jQuery.trim(StringVariable) == '')
20
Able Alias

Verwenden Sie die systemeigenen JavaScript-Methoden: String.trimLeft() , String.trimRight() und String.trim() .


String.trim() wird in IE9 + und allen anderen gängigen Browsern unterstützt :

'  Hello  '.trim()  //-> 'Hello'


String.trimLeft() und String.trimRight() sind nicht standardmässig, werden jedoch in allen gängigen Browsern außer IE

'  Hello  '.trimLeft()   //-> 'Hello  '
'  Hello  '.trimRight()  //-> '  Hello'


IE-Unterstützung ist mit Polyfill jedoch einfach:

if (!''.trimLeft) {
    String.prototype.trimLeft = function() {
        return this.replace(/^\s+/,'');
    };
    String.prototype.trimRight = function() {
        return this.replace(/\s+$/,'');
    };
    if (!''.trim) {
        String.prototype.trim = function() {
            return this.replace(/^\s+|\s+$/g, '');
        };
    }
}
13
Web_Designer

Heute können Sie string.trim () verwenden, dh die native Javascript-Implementierung

var orig = "   foo  ";
console.log(orig.trim());//foo

Siehe auch 

11
Emilio Gort
String.prototype.trim = String.prototype.trim || function () {
    return this.replace(/^\s+|\s+$/g, "");
};

String.prototype.trimLeft = String.prototype.trimLeft || function () {
    return this.replace(/^\s+/, "");
};

String.prototype.trimRight = String.prototype.trimRight || function () {
    return this.replace(/\s+$/, "");
};

String.prototype.trimFull = String.prototype.trimFull || function () {
    return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "").replace(/\s+/g, " ");
};

Schamlos aus Matt duereg gestohlen.

10
yckart

Kürzen Sie den Code von angle js project

var trim = (function() {

  // if a reference is a `String`.
  function isString(value){
       return typeof value == 'string';
  } 

  // native trim is way faster: http://jsperf.com/angular-trim-test
  // but IE doesn't have it... :-(
  // TODO: we should move this into IE/ES5 polyfill

  if (!String.prototype.trim) {
    return function(value) {
      return isString(value) ? 
         value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
    };
  }

  return function(value) {
    return isString(value) ? value.trim() : value;
  };

})();

und nennen Sie es als trim(" hello ")

7
rab

Hier ist ein sehr einfacher Weg:

function removeSpaces(string){
return string.split(' ').join('');
}
5
HenryDev

verwenden Sie einfach Code

var str = "       Hello World!        ";
alert(str.trim());

Browser-Unterstützung

Feature         Chrome  Firefox Internet Explorer   Opera   Safari  Edge
Basic support   (Yes)   3.5     9                   10.5    5       ?

Für alten Browser Prototyp hinzufügen

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}
4

Sie können Ihre Variable einfach als Zeichenfolge deklarieren und deren Trimmfunktion verwenden: 

var str = new String('my string'); 
str= str.trim();
3
Anahit Serobyan

Heute unterstützt so ziemlich jeder Browser String.prototype.trim() .

Du verwendest es so:

var origStr = '   foo  ';
var newStr = origStr.trim(); // Value of newStr becomes 'foo'

Falls Sie dennoch einen alten Browser unterstützen müssen, der diese Funktion nicht unterstützt, ist dies eine vom MDN vorgeschlagene Polyfill

if (!String.prototype.trim) {
    String.prototype.trim = function () {
       return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
    };
}
2
John Slegers
if(!String.prototype.trim){  
  String.prototype.trim = function(){  
    return this.replace(/^\s+|\s+$/gm,'');  
  };  
}

Von den vorherigen Antworten unterscheidet sich das Hinzufügen des Flags m

Das Flag m durchsucht den Text mehrerer linearer Elemente. In diesem Modus wird die Markierung am Anfang und Ende des Musters (^$) vor und nach dem Zeilenvorschubzeichen (\n) eingefügt.

1
simhumileco

Ich habe eine lib, die trim verwendet. so gelöst es mit dem folgenden Code.

String.prototype.trim = String.prototype.trim || function(){ return jQuery.trim(this); };
1
Zesar

Die Verwendung von trim() in String , das eine native ist, könnte der einfachste Weg sein:

const fullName = "       Alireza Dezfoolian     ";
const trimmedFullName = fullName.trim();

console.log(trimmedFullName);

0
Alireza

Hier ist es in TypeScript:

var trim: (input: string) => string = String.prototype.trim
    ? ((input: string) : string => {
        return (input || "").trim();
    })
    : ((input: string) : string => {
        return (input || "").replace(/^\s+|\s+$/g,"");
    })

Wenn der native Prototyp nicht verfügbar ist, wird auf den Regex zurückgegriffen.

0
Joseph Lennox

Ich hatte diese Funktion zum Trimmen geschrieben, als die .trim () - Funktion im Jahr 2008 nicht in JS verfügbar war. Einige ältere Browser unterstützen die .trim () - Funktion immer noch nicht und ich hoffe, diese Funktion kann jemandem helfen.

TRIM-FUNKTION

function trim(str)
{
    var startpatt = /^\s/;
    var endpatt = /\s$/;

    while(str.search(startpatt) == 0)
        str = str.substring(1, str.length);

    while(str.search(endpatt) == str.length-1)
        str = str.substring(0, str.length-1);   

    return str;
}

Erläuterung : Die Funktion trim () akzeptiert ein String-Objekt und entfernt alle beginnenden und nachfolgenden Leerzeichen (Leerzeichen, Tabulatoren und Zeilenumbrüche) und gibt den zugeschnittenen String zurück. Mit dieser Funktion können Sie Formulareingaben abschneiden, um sicherzustellen, dass gültige Daten gesendet werden.

Die Funktion kann auf folgende Weise als Beispiel aufgerufen werden.

form.elements[i].value = trim(form.elements[i].value);
0
AnaMaria

Ich weiß nicht, welche Fehler sich hier verstecken können, aber ich verwende Folgendes:

var some_string_with_extra_spaces="   goes here    "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])

Oder dies, wenn der Text enthält:

console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])

Noch ein Versuch:

console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])
0
plavozont

Sie können dies mit dem einfachen JavaScript tun:

function trimString(str, maxLen) {
if (str.length <= maxLen) {
return str;
}
var trimmed = str.substr(0, maxLen);
return trimmed.substr(0, trimmed.lastIndexOf(' ')) + '…';
}

// Let's test it

sentenceOne = "too short";
sentencetwo = "more than the max length";

console.log(trimString(sentenceOne, 15));
console.log(trimString(sentencetwo, 15));

Hier einige Beispiele für eine Zeichenfolge mit JavaScript trimmen.

0
user5846985