JavaScript chuleta / rebanada / recortar último carácter en la cadena
-
11-09-2019 - |
Pregunta
Tengo una cadena, 12345.00
, y me gustaría que volver 12345.0
.
He mirado trim
, pero parece que sólo está recortando espacios en blanco y slice
la que no veo cómo podría funcionar. ¿Alguna sugerencia?
Otros consejos
Puede utilizar rebanada ! Sólo hay que asegurarse de que sabe cómo usarlo. # s positivos son en relación con el inicio, los números negativos son en relación con el final.
js>"12345.00".slice(0,-1)
12345.0
Puede utilizar el rel="noreferrer"> método de objetos de cadena de JavaScript :
s = s.substring(0, s.length - 4)
Se elimina incondicionalmente los últimos cuatro caracteres de s
cadena.
Sin embargo, si desea condicionalmente eliminar los últimos cuatro caracteres, sólo si son exactamente _bar
:
var re = /_bar$/;
s.replace(re, "");
El método más sencillo es utilizar el método slice
de la cadena, lo que permite a posiciones negativas (correspondiente a las compensaciones desde el extremo de la cadena):
var s = "your string";
var withoutLastFourChars = s.slice(0, -4);
Si necesitas algo más general para eliminar todo lo que después (e incluyendo) el último guión, se puede hacer lo siguiente (siempre que s
está garantizado para contener al menos un guión bajo):
var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"
Para un número como su ejemplo, yo recomendaría hacer esto sobre substring
:
alert(parseFloat('12345.00').toFixed(1)); // 12345.0
Ten en cuenta que esto va a la vuelta de la serie, sin embargo, que me imagino que se desea pero tal vez no:
alert(parseFloat('12345.46').toFixed(1)); // 12345.5
Uso de la función rebanada de JavaScript:
var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here
Esto podría ser utilizado para eliminar '_bar' al final de una cadena, de cualquier longitud.
Una expresión regular es lo que busca:
var str = "foo_bar";
alert(str.replace(/_bar$/, ""));
¿Qué hay de:
var myString = "12345.00";
myString.substring(0, myString.length - 1);
"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
- (. *), Captura cualquier carácter varias veces
- . Los partidos último carácter, en este caso
- $, coincide con el final de la cadena
Usar expresiones regulares:
var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
Prueba esto:
var myString = "Hello World!";
myString.slice(0, -1);
Esta es una alternativa que no creo que he visto en las otras respuestas, sólo por diversión.
var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));
No es tan simple como legible o porción o subcadena pero que le permiten jugar con la cadena utilizando algunos métodos de arreglos agradables, por lo que vale la pena conocer.
var str = "test!";
var newStr = str.slice(0,-1); //test
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
Si usted quiere hacer el redondeo genérica de los flotadores, en lugar de recortar el último carácter:
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: Parece que existe una función integrada para esto, como señala Paolo. Esta solución es, obviamente, mucho más limpia que la mía. Use parseFloat seguido por toFixed
if(str.substring(str.length - 4) == "_bar")
{
str = str.substring(0, str.length - 4);
}
https://jsfiddle.net/invos/w3zeqv6v/
El uso justo de compensación si no desea que los espacios
"11.01 °C".slice(0,-2).trim()
En los casos en los que desea eliminar algo que está cerca del final de una cadena (en el caso de las cadenas de tamaño variable) se pueden combinar slice () y substr ().
Yo tenía una cadena con el formato, de forma dinámica, con una lista de etiquetas de anclaje separados por comas. La cadena era algo como:
var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";
Para eliminar la última coma hice lo siguiente:
str = str.slice(0, -5) + str.substr(-4);
@ Jason S:
Puede utilizar porción! Sólo tienes que asegúrese de que sabe cómo usarlo. # s positivos son en relación con el comenzando, los números negativos son con relación al extremo.
js> "12345.00" .slice (0, -1) 12345.0
Lo siento por mi graphomany pero después fue etiquetado 'jquery' anterior. Por lo tanto, no se puede utilizar slice () en el interior de jQuery porque slice () es el método jQuery para las operaciones con elementos DOM, no subseries ... En otras palabras responden @ Jon Erickson sugieren solución realmente perfecto.
Sin embargo, el método funciona de la función jQuery, dentro sencilla Javascript. Necesidad de decir debido a la última discusión en los comentarios, que jQuery es mucho más a menudo renovable extensión de JS que su propio padre ECMAScript más conocido.
Aquí también existen dos métodos:
como nuestro:
string.substring(from,to)
como además si '' a los rendimientos del índice nulled el resto de la cadena. por lo que:
string.substring(from)
positivo o negativo ...
y algún otro - substr () - que proporcionan gama de subcadena y 'longitud' puede ser único positivo:
string.substr(start,length)
También algunos mantenedores sugieren que la última string.substr(start,length)
método no funciona o funciona con el error para MSIE.
Prueba esto:
<script>
var x="foo_foo_foo_bar";
for (var i=0; i<=x.length; i++) {
if (x[i]=="_" && x[i+1]=="b") {
break;
}
else {
document.write(x[i]);
}
}
</script>
También puede probar el ejemplo de trabajo en vivo en http://jsfiddle.net/informativejavascript/F7WTn / 87 / .
Uso subcadena para tener todo a la izquierda de _bar. Pero primero hay que conseguir el instr de _bar en la cadena:
str.substring(3, 7);
3 es que de inicio y 7 es la longitud.