Leerzeichen
Bonsai
- javascript
Wie kann ich denn bei einem String die Leerzeichen hinten entfernen?
Vielen Dank, Bonsai
Schau' einfach mal hier rein:
gruss mark,
das script, auf der von Dir verlinkten seite ist schon recht uebel.
erstens sind regulaere ausdruecke aufgrund ihrer maechtigkeit wesentlich
besser fuer die loesung des gestellten problems (_alle_arten_ von leerzeichen
sollen rechts entfernt werden) geeignet.
zweitens kann man sich problemlos die objektmethoden selber erschaffen,
welche man von anderen sprachen her schaetzt und in javascript dann
vermisst (in diesem falle "String.rightTrim
").
regulaerer ausdruck, um alle moeglichen leerzeichen in einem string zu finden:
~~~javascript
var regX = /\s+/g;
/*
\s : ein einzelnes aus einer vielzahl von moeglichen leerzeichen;
\s+ : mindestens ein leerzeichen oder eine squenz von leerzeichen;
g : das "global"-flag veranlasst eine suche ueber den gesamten term;
*/
variationen des gerade gegebenen beispiels:
~~~javascript
var regX = /\s+$/; // einzelnes leerzeichen oder leerzeichen-sequenz am stringende;
var regX = /^\s+/; // einzelnes leerzeichen oder leerzeichen-sequenz am stringanfang;
damit liesse sich schon eine
~~~javascript
function rightTrim (str) {
return str.replace(/\s+$/,"");
}
bauen, die einen string-parameter "str" erwartete
und diesen nach efolgreicher behandlung zurueckgaebe.
um nun den sprachkern von javascript um die String-methoden "leftTrim", "rightTrim",
"basicTrim" und "superTrim" zu erweitern, bedient man sich des prototypen-konzepts
dieser sprache.
der in jeder javascript-api vorhandene konstruktor "`String`{:.language-javascript}" bekommt die gerade
genannten eigenschaften als funktions-objekte so zugewiesen, dass diese automatisch
methoden eines jeden neuen string-objekts sind:
~~~javascript
String.prototype.leftTrim = function () {
return (this.replace(/^\s+/,""));
};
String.prototype.rightTrim = function () {
return (this.replace(/\s+$/,""));
};
//kombiniert "leftTrim" und "rightTrim";
String.prototype.basicTrim = function () {
return (this.replace(/\s+$/,"").replace(/^\s+/,""));
};
//dampft leerzeichen(-sequenzen) innerhalb einer zeichenkette auf ein einzelnes "space" ein;
String.prototype.superTrim = function () {
return(this.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));
};
//zugabe: entfernt alle leerzeichen aus einer zeichenkette;
String.prototype.removeWhiteSpaces = function () {
return (this.replace(/\s+/g,""));
};
der anwendungsfall saehe dannach so aus:
~~~javascript var myStr = " \n \t hallo \n\t\ welt \n";
alert("+++" + myStr.leftTrim() + "+++");
alert("+++" + myStr.rightTrim() + "+++");
alert("+++" + myStr.basicTrim() + "+++");
alert("+++" + myStr.superTrim() + "+++");
alert("+++" + myStr.removeWhiteSpaces() + "+++");
by(t)e by(t)e - peterS. - pseliger@gmx.net
--
"Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]