Comment puis-je couper une chaîne en JavaScript?
Tous les navigateurs depuis IE9 + ont trim()
.
Pour les navigateurs qui ne supportent pas trim()
, vous pouvez utiliser ce polyfill à partir de MDN :
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, '');
};
})();
}
Regarde ça:
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,' ');};
Le rognage de jQuery est pratique si vous utilisez déjà ce framework.
$.trim(' your string ');
J'ai tendance à utiliser souvent jQuery, il est donc naturel que couper les cordes avec cela soit naturel. Mais il est possible qu’il y ait une réaction négative contre jQuery? :)
Bien qu'il y ait beaucoup de réponses correctes ci-dessus, il convient de noter que l'objet String
en JavaScript a une méthode native .trim()
à partir de ECMAScript 5 Ainsi, idéalement, toute tentative de prototype de la méthode trim devrait réellement vérifier si elle existe déjà en premier.
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
};
}
Ajouté nativement dans: JavaScript 1.8.1/ECMAScript 5
Ainsi soutenu dans:
Firefox: 3.5+
Safari: 5+
Internet Explorer: IE9 + (en mode standard uniquement!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5 -support-and-more.aspx
Chrome: 5+
Opéra: 10.5+
Tableau de support ECMAScript 5: http://kangax.github.com/es5-compat-table/
Il y a beaucoup d'implémentations qui peuvent être utilisées. Le plus évident semble être quelque chose comme ceci:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
" foo bar ".trim(); // "foo bar"
Version simple ici Qu'est-ce qu'une fonction générale pour JavaScript trim?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
Je sais que cette question a été posée trois ans en arrière. Maintenant, String.trim()
a été ajouté de manière native dans JavaScript.
document.getElementById("id").value.trim();
Flagrant Badassery comporte 11 versions différentes avec des informations de référence:
http://blog.stevenlevithan.com/archives/faster-trim-javascript
Sans surprise, les expressions rationnelles sont plus lentes que les boucles traditionnelles.
Voici mon personnelle. Ce code est vieux! Je l'ai écrit pour JavaScript1.1 et Netscape 3 et il n'a été que légèrement mis à jour depuis. (Original utilisé 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);
}
Si vous utilisez jQuery, utilisez la fonction jQuery.trim()
. Par exemple:
if( jQuery.trim(StringVariable) == '')
Utilisez les méthodes JavaScript natives: String.trimLeft()
, String.trimRight()
et String.trim()
.
String.trim()
est pris en charge dans IE9 + et tous les autres navigateurs principaux :
' Hello '.trim() //-> 'Hello'
String.trimLeft()
et String.trimRight()
ne sont pas standard, mais sont supportés dans tous les principaux navigateurs sauf IE
' Hello '.trimLeft() //-> 'Hello '
' Hello '.trimRight() //-> ' Hello'
IE support est facile avec un polyfill cependant:
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, '');
};
}
}
Maintenant, vous pouvez utiliser string.trim () qui est une implémentation Javascript native
var orig = " foo ";
console.log(orig.trim());//foo
Voir également
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, " ");
};
Volé sans vergogne à Matt duereg .
Code de rognage de angular 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;
};
})();
et appelez-le en tant que trim(" hello ")
Voici un moyen très simple:
function removeSpaces(string){
return string.split(' ').join('');
}
utilisez simplement le code
var str = " Hello World! ";
alert(str.trim());
Support du navigateur
Feature Chrome Firefox Internet Explorer Opera Safari Edge
Basic support (Yes) 3.5 9 10.5 5 ?
Pour l'ancien navigateur, ajouter un prototype
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Vous pouvez simplement déclarer votre variable en tant que chaîne et utiliser sa fonction trim:
var str = new String('my string');
str= str.trim();
Aujourd'hui, presque tous les navigateurs supportent String.prototype.trim()
.
Vous l'utilisez comme ceci:
var origStr = ' foo ';
var newStr = origStr.trim(); // Value of newStr becomes 'foo'
Si vous devez toujours prendre en charge un ancien navigateur qui ne prend pas cette fonctionnalité en charge, il s’agit de a polyfill suggéré par le MDN:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/gm,'');
};
}
Des réponses précédentes, l’ajout de l’indicateur m
diffère.
Le drapeau m
va rechercher le texte de plusieurs linéaires. Dans ce mode, les marques de début et de fin du modèle (^
$
) sont insérées avant et après le caractère de nouvelle ligne (\n
).
J'ai une lib qui utilise trim. donc résolu en utilisant le code suivant.
String.prototype.trim = String.prototype.trim || function(){ return jQuery.trim(this); };
Utiliser trim()
sur String qui est un natif pourrait être le moyen le plus simple:
const fullName = " Alireza Dezfoolian ";
const trimmedFullName = fullName.trim();
console.log(trimmedFullName);
La voici dans TypeScript:
var trim: (input: string) => string = String.prototype.trim
? ((input: string) : string => {
return (input || "").trim();
})
: ((input: string) : string => {
return (input || "").replace(/^\s+|\s+$/g,"");
})
Il reviendra à l'expression régulière si le prototype natif n'est pas disponible.
J'avais écrit cette fonction pour trim, quand la fonction .trim () n'était pas disponible dans JS en 2008. Certains des navigateurs plus anciens ne supportent toujours pas la fonction .trim () et j'espère que cette fonction pourra aider quelqu'un.
TRIM FUNCTION
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;
}
Explication : La fonction trim () accepte un objet chaîne, supprime les espaces blancs de début et de fin (espaces, tabulations et nouvelles lignes) et renvoie la chaîne coupée. Vous pouvez utiliser cette fonction pour supprimer les entrées de formulaire afin d’assurer l’envoi de données valides.
La fonction peut être appelée de la manière suivante à titre d'exemple.
form.elements[i].value = trim(form.elements[i].value);
Je ne sais pas quels bugs peuvent se cacher ici, mais j'utilise ceci:
var some_string_with_extra_spaces=" goes here "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])
Ou ceci, si le texte contient entre:
console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])
Un autre essai:
console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])
Vous pouvez le faire en utilisant le JavaScript simple:
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));
Voici quelques exemples supplémentaires de couper une chaîne à l'aide de JavaScript .