J'ai une chaîne, 12345.00
, et j'aimerais qu'elle retourne 12345.0
.
J'ai jeté un œil à trim
, mais il semble qu'il s'agisse uniquement de rogner les espaces et slice
ce que je ne vois pas comment cela fonctionnerait. Aucune suggestion?
Vous pouvez utiliser la fonction sous-chaîne :
var str = "12345.00";
str = str.substring(0, str.length - 1); // "12345.0"
C'est la réponse acceptée, mais selon les conversations ci-dessous, la syntaxe slice est beaucoup plus claire:
var str = "12345.00";
str = str.slice(0, -1); // "12345.0"
Vous pouvez utiliser slice ! Vous devez juste vous assurer que vous savez comment l'utiliser. Les nombres positifs sont relatifs au début, les nombres négatifs sont relatifs à la fin.
js>"12345.00".slice(0,-1)
12345.0
Vous pouvez utiliser la méthode sous-chaîne des objets chaîne JavaScript:
s = s.substring(0, s.length - 4)
Il supprime inconditionnellement les quatre derniers caractères de la chaîne s
.
Cependant, si vous voulez conditionnellement supprimer les quatre derniers caractères, uniquement s'ils sont exactement _bar
:
var re = /_bar$/;
s.replace(re, "");
La méthode la plus simple consiste à utiliser la méthode slice
de la chaîne, qui autorise les positions négatives (correspondant aux décalages à partir de la fin de la chaîne):
var s = "your string";
var withoutLastFourChars = s.slice(0, -4);
Si vous avez besoin de quelque chose de plus général pour tout supprimer après (et y compris) le dernier trait de soulignement, vous pouvez procéder comme suit (à condition que s
contienne au moins un trait de soulignement):
var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"
Pour un nombre comme votre exemple, je vous recommande de procéder de la manière suivante substring
:
alert(parseFloat('12345.00').toFixed(1)); // 12345.0
Notez que cela va en fait arrondir le nombre, bien que j'imagine que c'est souhaitable mais peut-être pas:
alert(parseFloat('12345.46').toFixed(1)); // 12345.5
Utilisation de la fonction slice de JavaScript:
var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here
Cela pourrait être utilisé pour supprimer '_bar' à la fin d'une chaîne, de n'importe quelle longueur.
Une expression régulière est ce que vous recherchez:
var str = "foo_bar";
alert(str.replace(/_bar$/, ""));
Que diriez-vous:
var myString = "12345.00";
myString.substring(0, myString.length - 1);
Essaye ça:
var myString = "Hello World!";
myString.slice(0, -1);
Utilisez regex:
var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
"a string".match(/(.*).$/)[1] // => a strin
"a string".match(/(.*).$/) // returns ["a string", "a strin"]
"a string".match(/(.*).{2}$/)[1] // to get two chars off => a stri
Voici une alternative que je ne pense pas avoir vue dans les autres réponses, juste pour le plaisir.
var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));
Pas aussi lisible ou simple qu'une tranche ou une sous-chaîne, mais vous permet de jouer avec la chaîne en utilisant certaines méthodes de tableau Nice, ce qui vaut la peine d'être connu.
debris = string.split("_") //explode string into array of strings indexed by "_"
debris.pop(); //pop last element off the array (which you didn't want)
result = debris.join("_"); //Fuse the remainng items together like the Sun
var str = "test!";
var newStr = str.slice(0,-1); //test
Si vous souhaitez arrondir les flottants de manière générique, au lieu de simplement couper le dernier caractère:
var float1 = 12345.00,
float2 = 12345.4567,
float3 = 12345.982;
var MoreMath = {
/**
* Rounds a value to the specified number of decimals
* @param float value The value to be rounded
* @param int nrDecimals The number of decimals to round value to
* @return float value rounded to nrDecimals decimals
*/
round: function (value, nrDecimals) {
var x = nrDecimals > 0 ? 10 * parseInt(nrDecimals, 10) : 1;
return Math.round(value * x) / x;
}
}
MoreMath.round(float1, 1) => 12345.0
MoreMath.round(float2, 1) => 12345.5
MoreMath.round(float3, 1) => 12346.0
EDIT: On dirait 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
if(str.substring(str.length - 4) == "_bar")
{
str = str.substring(0, str.length - 4);
}
https://jsfiddle.net/invos/w3zeqv6v/
Il suffit d'utiliser trim si vous ne voulez pas d'espaces
"11.01 °C".slice(0,-2).trim()