Pergunta

Eu tenho uma string, 12345.00, e eu gostaria que ele retorne 12345.0.

Eu olhei trim, mas parece que é só aparar espaço em branco e slice que eu não vejo como isso funcionaria. Alguma sugestão?

Foi útil?

Solução

Você pode usar o substring função:

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

Esta é a resposta aceita, mas de acordo com as conversas abaixo, o fatia sintaxe é muito mais clara:

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

Outras dicas

Você pode usar fatia ! Você apenas tem que certificar-se de que você sabe como usá-lo. #s positivos são em relação ao início, os números negativos são em relação ao final.

js>"12345.00".slice(0,-1)
12345.0

O método mais simples é utilizar o método slice da cadeia, o que permite que as posições negativas (correspondente a deslocamentos a partir do fim da cadeia):

var s = "your string";
var withoutLastFourChars = s.slice(0, -4);

Se você precisava de algo mais geral para remover tudo após (e incluindo) o último sublinhado, você pode fazer o seguinte (desde que s é garantido para conter pelo menos um sublinhado):

var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"

Para um número como o seu exemplo, eu recomendaria fazer isso substring sobre: ??

alert(parseFloat('12345.00').toFixed(1)); // 12345.0

Note que isso vai realmente em volta do número, no entanto, que eu imagino é desejado, mas talvez não:

alert(parseFloat('12345.46').toFixed(1)); // 12345.5

Usando a função fatia de JavaScript:

var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here

Isto poderia ser usado para remover '_bar' na extremidade de uma corda, de qualquer comprimento.

Uma expressão regular é o que você está procurando:

var str = "foo_bar";
alert(str.replace(/_bar$/, ""));

Como sobre: ??

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 quaisquer caracteres várias vezes
  2. ., Corresponde último caractere, neste caso
  3. $, corresponde ao fim da cadeia

Use regex:

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');

Tente isto:

var myString = "Hello World!";
myString.slice(0, -1);

Aqui é uma alternativa que eu não acho que eu já vi em outras respostas, apenas por diversão.

var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));

Não é tão legível ou simples como fatia ou substring mas permite que você jogue com a string usando alguns métodos de matriz agradáveis, por isso vale a pena conhecer.

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);
}

Nos casos em que você deseja remover algo que é perto da extremidade de uma corda (no caso de strings de tamanho variável) você pode combinar slice () e substr ().

Eu tinha uma corda com marcação, construído de forma dinâmica, com uma lista de marcas de âncora, separados por vírgulas. A corda era algo como:

var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";

Para remover a última vírgula eu fiz o seguinte:

str = str.slice(0, -5) + str.substr(-4);

@ Jason S:

Você pode usar fatia! Você só tem de Verifique se você sabe como usá-lo. #s positivos são em relação ao a começar, são números negativos em relação ao final.

js> "12.345,00" .slice (0, -1) 12.345,0

Sorry for my graphomany mas mensagem foi marcado 'jquery' mais cedo. Então, você não pode usar slice () dentro jQuery porque slice () é o método jQuery para operações com elementos DOM, não substrings ... Em outra resposta palavras @ Jon Erickson sugerem solução realmente perfeito.

No entanto, o seu método de vontade funciona da função jQuery, dentro simples Javascript. Necessidade de dizer, devido à última discussão nos comentários, que jQuery é muito mais frequentemente renovável extensão da JS do que o seu próprio pai mais conhecido ECMAScript.

Aqui também existem dois métodos:

como o nosso:

string.substring(from,to) como mais se 'para' index retorna nulled o resto da string. assim: string.substring(from) positivo ou negativo ...

e alguns outros - substr () - que fornecem gama de substring e 'tamanho' só pode ser positivo: string.substr(start,length)

Além disso, alguns mantenedores sugerem que string.substr(start,length) último método não funciona ou trabalhar com o erro para MSIE.

Tente isto:

<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>

Você também pode tentar o exemplo de trabalho ao vivo em http://jsfiddle.net/informativejavascript/F7WTn / 87 / .

Use substring para ter tudo à esquerda de _bar. Mas primeiro você tem que obter o instr da _bar na string:

str.substring(3, 7);

3 é que o início e 7 é o comprimento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top