J'essaie de trouver un moyen de couper les espaces du début et de la fin de la chaîne de titre. J'utilisais ceci, mais cela ne semble pas fonctionner:
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
Des idées?
javascript
regex
James Jeffery
la source
la source
.trim
intégré maintenant, c'est donc la réponse pour les navigateurs modernes: stackoverflow.com/a/3000900/29182function trim11 (str) { str = str.replace(/^\s+/, ''); for (var i = str.length - 1; i >= 0; i--) { if (/\S/.test(str.charAt(i))) { str = str.substring(0, i + 1); break; } } return str; }
Réponses:
Remarque: à partir de 2015, tous les principaux navigateurs (y compris IE> = 9) prennent en charge String.prototype.trim () . Cela signifie que pour la plupart des cas d'utilisation, le simple fait de faire
str.trim()
est le meilleur moyen d'atteindre ce que la question demande.Steven Levithan a analysé de nombreuses implémentations différentes de
trim
Javascript en termes de performances.Sa recommandation est:
pour une "mise en œuvre à usage général qui est rapide entre les navigateurs", et
"si vous voulez gérer de longues chaînes d'une vitesse exceptionnelle dans tous les navigateurs".
Références
la source
String.prototype.trim = String.prototype.trim || function trim() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
/^\s\s*/
et pas celle-ci/^\s*/
trim1
ettrim11
?Si l'utilisation de jQuery est une option:
ou simplement:
la source
Comme @ChaosPandion l'a mentionné, la
String.prototype.trim
méthode a été introduite dans la spécification ECMAScript 5th Edition , certaines implémentations incluent déjà cette méthode, donc le meilleur moyen est de détecter l'implémentation native et de la déclarer uniquement si elle n'est pas disponible:Ensuite, vous pouvez simplement:
la source
String.prototype.trim
n'est pas une fonction, ce n'est pas laString.prototype.trim
méthode décrite sur la 5ème édition d'ECMAScript Spécification, la spécification garantit qu'iltrim
s'agit d'un objet de fonction sur les environnements ES5.throw { name: "UnlikelyPolyfillException", message: "Did someone really write a property on the String prototype named 'trim' that isn't a ECMA 5 compatible shim? Come on now, that's crazy." }
Je sais que c'est un ancien post, mais je pensais juste partager notre solution. Dans la quête du code le plus court (tout le monde n'aime-t-il pas simplement les expressions régulières laconiques), on pourrait à la place utiliser:
BTW: J'ai exécuté ce même test via le lien partagé ci-dessus blog.stevenlevithan.com - Trim JavaScript plus rapide et ce modèle a battu toutes les autres MAINS!
En utilisant IE8, test ajouté comme test13. Les résultats ont été:
la source
ECMAScript 5 prend en charge
trim
et cela a été implémenté dans Firefox.garniture - MDC
la source
Ici, cela devrait faire tout ce dont vous avez besoin
la source
Voici quelques méthodes que j'ai utilisées dans le passé pour couper des chaînes dans js:
la source
^[\s*]+
correspond*
au début de la chaîne, de sorte que votre fonction se limite"*** Foo"
à"Foo"
.Voici mon code actuel, la 2ème ligne fonctionne si je commente la 3ème ligne, mais ne fonctionne pas si je la laisse telle quelle.
la source
Utilisez simplement la
string.trim()
méthode. Il est pris en charge par tous les principaux navigateurs. Référence ici: http://www.w3schools.com/jsref/jsref_trim_string.aspla source
jQuery.trim ("bonjour, comment vas-tu?");
:)
la source
Lorsque le DOM est complètement chargé, vous pouvez l'ajouter à tous les champs de texte. Je n'ai jamais eu de situation où je devais soumettre un espace de début ou de fin, donc le faire tout le temps à l'échelle mondiale a fonctionné pour moi ...
la source
blur
se produit-il réellement avant la soumission lorsque je suis dans un champ et que je clique sur <kbd> entrée </kbd> pour envoyer un formulaire?C'est ce que suggère l'architecte JavaScript / Guru Douglas Crockford.
Remarque: vous devez définir "méthode" pour Function.prototype.
Alternativement
Observation
Dans les navigateurs récents, la méthode de découpage est incluse par défaut. Vous n'avez donc pas à l'ajouter explicitement.
Les principaux navigateurs Chrome, Firefox, Safari, etc. prennent en charge la méthode de coupe . Enregistré dans Chrome 55.0.2883.95 (64 bits), Firefox 51.0.1 (64 bits), Safari 10.0 (12602.1.50.0.10).
la source
la source
un essai récursif pour cela
appelle comme ça:
si vous souhaitez filtrer des caractères spécifiques, vous pouvez définir une chaîne de liste en gros:
la source
' '
, mais la question concerne les espaces blancs en général, y compris"\n"
,"\t"
et les autres caractères non imprimables qui correspondent dans l'expression régulière par/\s/
.