J'ai une chaîne, 12345.00
et j'aimerais qu'elle revienne 12345.0
.
J'ai regardé trim
, mais il semble que ce soit seulement un espace blanc et slice
que je ne vois pas comment cela fonctionnerait. Aucune suggestion?
javascript
slice
trim
Phill Pafford
la source
la source
Math.round('0.5') === 1
;)Réponses:
Vous pouvez utiliser la fonction de sous - chaîne :
C'est la réponse acceptée, mais selon les conversations ci-dessous, la syntaxe de tranche est beaucoup plus claire:
la source
str = str.substring(0, str.length -1);
slice
&substring
sont toutes les mêmes; sauf que leslice()
accepte un index négatif, par rapport à la fin de la chaîne, mais pas lesubstring
, il renvoie uneout-of-bound
erreursubstring
est 11% plus rapide queslice
. jsperf.com/js-slice-vs-substring-testVous pouvez utiliser la tranche ! Vous devez juste vous assurer de savoir comment l'utiliser. Les # positifs sont relatifs au début, les nombres négatifs sont relatifs à la fin.
la source
substring
méthode ne pourrait-elle pas être utilisée également sur les chaînes dynamiques? En utilisant la str.length pour obtenir dynamiquement la longueur?Vous pouvez utiliser la méthode de sous- chaîne des objets chaîne JavaScript:
Il supprime inconditionnellement les quatre derniers caractères de la chaîne
s
.Cependant, si vous souhaitez supprimer conditionnellement les quatre derniers caractères, uniquement s'ils sont exactement
_bar
:la source
slice
c'est mieux ici.s.slice(0, -4)
La méthode la plus simple consiste à utiliser la
slice
méthode de la chaîne, qui autorise les positions négatives (correspondant aux décalages à la fin de la chaîne):Si vous aviez besoin de quelque chose de plus général pour tout supprimer après (et y compris) le dernier trait de soulignement, vous pouvez faire ce qui suit (tant qu'il
s
est garanti de contenir au moins un trait de soulignement):la source
Pour un nombre comme votre exemple, je recommanderais de le faire sur
substring
:Notez cependant que cela arrondira le nombre, ce que j'imagine souhaitable, mais peut-être pas:
la source
Utilisation de la fonction de tranche de JavaScript:
Cela pourrait être utilisé pour supprimer «_bar» à la fin d'une chaîne, de n'importe quelle longueur.
la source
Une expression régulière est ce que vous recherchez:
la source
Essaye ça:
la source
Que diriez-vous:
la source
Utilisez l'expression régulière:
la source
la source
la source
Voici une alternative que je ne pense pas avoir vue dans les autres réponses, juste pour le plaisir.
Pas aussi lisible ou simple qu'une tranche ou une sous-chaîne, mais vous permet de jouer avec la chaîne en utilisant de belles méthodes de tableau, donc à savoir.
la source
la source
Le chemin le plus court:
la source
Si vous souhaitez effectuer un arrondi générique des flottants, au lieu de simplement couper le dernier caractère:
EDIT: Il semble qu'il existe une fonction intégrée pour cela, comme le souligne Paolo. Cette solution est évidemment beaucoup plus propre que la mienne. Utilisez parseFloat suivi de toFixed
la source
la source
https://jsfiddle.net/invos/w3zeqv6v/
/programming/34817546/javascript-how-to-delete-last-two-characters-in-a-string
"11.01 °C".slice(0,-2).trim()
la source
Performance
Aujourd'hui 2020.05.13 j'effectue des tests des solutions choisies sur Chrome v81.0, Safari v13.1 et Firefox v76.0 sur MacOs High Sierra v10.13.6.
Conclusions
slice(0,-1)
(D) est la solution rapide ou la plus rapide pour les chaînes courtes et longues et il est recommandé comme solution de cross-browser rapidesubstring
(C) etsubstr
(E) sont rapidesDétails
J'effectue deux tests pour les solutions A , B , C , D , E ( ext ), F , G (my)
Les solutions sont présentées dans l'extrait ci-dessous
Afficher l'extrait de code
Voici des exemples de résultats pour Chrome pour chaîne courte
la source
Sachez que
String.prototype.{ split, slice, substr, substring }
fonctionner sur des chaînes encodées UTF-16Aucune des réponses précédentes n'est compatible avec Unicode. Les chaînes sont encodées en UTF-16 dans la plupart des moteurs JavaScript modernes, mais les points de code Unicode plus élevés nécessitent des paires de substitution , donc les anciennes méthodes de chaîne préexistantes fonctionnent sur les unités de code UTF-16, pas sur les points de code Unicode.
De plus, les réponses RegExp ne correspondent pas aux sauts de ligne à la fin dans leur forme actuelle:
Utilisez l'itérateur de chaîne pour itérer les caractères
Le code Unicode utilise l'itérateur de la chaîne; voir
Array.from
et...
diffuser .string[Symbol.iterator]
peut être utilisé (par exemple au lieu destring
).Voir également Comment diviser une chaîne Unicode en caractères en JavaScript .
Exemples:
Utilisez les drapeaux
s
etu
sur unRegExp
Le drapeau
dotAll
ous
fait.
correspondre les caractères de saut de ligne, le drapeauunicode
ouu
active certaines fonctionnalités liées à Unicode.Exemples:
Notez que certains graphèmes sont constitués de plus d'un point de code, par exemple
🏳️🌈
qui se compose de la séquence🏳
(U + 1F3F3),VS16
(U + FE0F) ,ZWJ
(U + 200D) ,🌈
(U + 1F308). Ici, mêmeArray.from
divisera cela en quatre «personnages». Il est possible de les faire correspondre avec la proposition de propriétés de séquence d'échappement de la propriété Unicode .la source
Dans les cas où vous souhaitez supprimer quelque chose qui est proche de la fin d'une chaîne (dans le cas de chaînes de taille variable), vous pouvez combiner slice () et substr ().
J'avais une chaîne avec du balisage, construite dynamiquement, avec une liste de balises d'ancrage séparées par des virgules. La chaîne était quelque chose comme:
Pour supprimer la dernière virgule, j'ai fait ce qui suit:
la source
Essaye ça:
Vous pouvez également essayer l'exemple de travail en direct sur http://jsfiddle.net/informativejavascript/F7WTn/87/ .
la source
Désolé pour mon graphomany mais le post a été tagué 'jquery' plus tôt. Donc, vous ne pouvez pas utiliser slice () dans jQuery car slice () est une méthode jQuery pour les opérations avec des éléments DOM, pas des sous-chaînes ... En d'autres termes, répondez @Jon Erickson suggère une solution vraiment parfaite.
Cependant, votre méthode fonctionnera à partir de la fonction jQuery, à l'intérieur de Javascript simple. Besoin de dire en raison de la dernière discussion dans les commentaires, que jQuery est beaucoup plus souvent une extension renouvelable de JS que son propre parent ECMAScript le plus connu.
Ici aussi existent deux méthodes:
comme notre:
string.substring(from,to)
comme plus si l'index 'to' nulled renvoie le reste de la chaîne. donc:string.substring(from)
positif ou négatif ...et certains autres - substr () - qui fournissent une plage de sous-chaînes et la «longueur» ne peuvent être positifs que:
string.substr(start,length)
Certains responsables suggèrent également que la dernière méthode
string.substr(start,length)
ne fonctionne pas ou fonctionne avec une erreur pour MSIE.la source
String.prototype.slice
est une méthode nativeslice()
méthode jQuery pour la manipulation DOM: API jQuery: .slice () . ET SÛR, cela PEUT ÊTRE FIGURÉ comme un héritage polymorphe de JS Array.slice (), mais ce sont deux méthodes différentes, et je pense qu'il faut le distinguer. Ce n'est donc qu'une approximation de ces connaissances..slice
une variable qui est une chaîne, elle fera exactement ce que l'OP voulait. Peu importe que ce soit "à l'intérieur de jQuery" et il n'y a aucun moyen qu'il puisse "interférer" de quelque manière que ce soit à moins que vous n'écrasiezString.prototype
avec jQuery, ce qui, j'en suis sûr, empêchera TOUT code javascript de fonctionner. Votre réponse dit simplement que l'autre réponse n'est pas bonne et l'argument que vous fournissez est incorrect..data
manipulations fantaisistes et que vous vous retrouvez avec cette "chaîne"), qui si vous l'appeliezslice
, ne ferait pas ce que vous voulez. Cela dit, ce n'est pas vraiment une réponse utile.Utilisez la sous-chaîne pour obtenir tout à gauche de _bar. Mais vous devez d'abord obtenir l'instr de _bar dans la chaîne:
3 est ce début et 7 est la longueur.
la source