Quel est l' équivalent JavaScript de cette C#
méthode:
var x = "|f|oo||";
var y = x.Trim('|'); // "f|oo"
C # coupe le caractère sélectionné uniquement au début et à la fin de la chaîne!
javascript
string
trim
fubo
la source
la source
Vous pouvez utiliser une expression régulière telle que:
METTRE À JOUR:
Si vous souhaitez généraliser cela dans une fonction, vous pouvez effectuer les opérations suivantes:
la source
pour garder cette question à jour:
voici une approche que je choisirais plutôt que la fonction regex en utilisant l'opérateur de propagation ES6.
Version améliorée après le commentaire de @fabian (peut gérer les chaînes contenant le même caractère uniquement)
la source
[].concat(string)
ce qui n'est pas le résultat souhaité. L'utilisationArray.from(string)
fonctionnera.Une version sans regex qui est agréable à l'œil:
Pour les cas d'utilisation où nous sommes certains qu'il n'y a pas de répétition des caractères sur les bords.
la source
const trim = (str, chars) => str.split(chars).filter(x => { Boolean(x); console.log(typeof(x), x, Boolean(x)); }).join(chars); const str = "#//#//abc#//test#//end#//"; console.log(trim(str, '#//'));
Si vous avez affaire à des chaînes plus longues, je pense que cela devrait surpasser la plupart des autres options en réduisant le nombre de chaînes allouées à zéro ou à un:
Ou si vous souhaitez découper un ensemble de plusieurs caractères:
MODIFIER: Pour le plaisir, découpez des mots (plutôt que des caractères individuels)
la source
Cela peut couper plusieurs caractères à la fois:
la source
Si vous définissez ces fonctions dans votre programme, vos chaînes auront une version améliorée de
trim
qui peut couper tous les caractères donnés:La source
https://www.sitepoint.com/trimming-strings-in-javascript/
la source
À ma connaissance, jQuery n'a pas de fonction intégrée à la méthode que vous demandez. Cependant, avec javascript, vous pouvez simplement utiliser replace pour modifier le contenu de votre chaîne:
Cela remplacera toutes les occurrences de | avec rien.
la source
$
comme ça pour seulement à la fin:"||spam|||".replace(/\|+$/g, "")
ou un^
comme ça pour seulement au début:"||spam|||".replace(/^\|+/g, "")
Celui-ci coupe tous les délimiteurs de début et de fin
la source
Je suggérerais de regarder lodash et comment ils ont mis en œuvre la
trim
fonction.Voir Lodash Trim pour la documentation et la source pour voir le code exact qui effectue le rognage.
Je sais que cela ne fournit pas une réponse exacte à votre question, mais je pense qu'il est bon de définir une référence à une bibliothèque sur une telle question, car d'autres pourraient la trouver utile.
la source
La meilleure façon de résoudre cette tâche est (similaire avec la
trim
fonction PHP ):PS: pourquoi j'ai posté ma réponse, alors que la plupart des gens l'ont déjà fait avant? Parce que j'ai trouvé "la meilleure" erreur dans toutes leurs réponses: tous ont utilisé la méta '+' au lieu de '*', car ils
trim
doivent supprimer les caractères SI ILS SONT EN DÉBUT ET / OU FIN, mais il renvoie la chaîne d'origine dans le cas contraire .la source
En développant la réponse de @leaf, en voici une qui peut prendre plusieurs caractères:
la source
J'aime la solution de @ Pho3niX83 ...
Étendons-le avec "mot" au lieu de "char" ...
la source
la source
(notez le double échappement.
\\
nécessaire, pour avoir une barre oblique unique dans la chaîne , qui conduit alors à l'échappement de|
dans regExp ).Seuls quelques caractères ont besoin de regExp-Escaping. , parmi eux l'opérateur de tuyauterie.
la source
essayer:
la source
la source
Essayez cette méthode:
la source