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?

¿Fue útil?

Solución

Puede utilizar el subcadena función:

var str = "12345.00";
str = str.substring(0, str.length - 1); // "12345.0"

Esta es la respuesta aceptada, pero según las conversaciones abajo, la rebanada sintaxis es mucho más claro:

var str = "12345.00";
str = str.slice(0, -1); // "12345.0"

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

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
  1. (. *), Captura cualquier carácter varias veces
  2. . Los partidos último carácter, en este caso
  3. $, 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
if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top