Como faço para substituir a string no JavaScript para converter '9,61' em '9:61'?

275

Dada a linha de código

var value = $("#text").val();

e value = 9.61preciso converter 9.61para 9:61. Como posso usar a função de substituição de JavaScript aqui?

Nisanth Kumar
fonte
29
Observe que isso não tem nada a ver com jQuery, mas apenas com javascript antigo simples.
Ikke
1
Eu tenho um problema similar. Eu tenho uma variável 'var' em javascript e quero substituir a string / caracteres nela. Eu tentei este código: var myObject = "my% dynamic% value \ n"; myObject = myObject.replace ("%", ""). replace ("\ n", ""); Também tentei myObject = myObject.replace ('%', ''). Replace ('\ n', ''); Dá-me o erro que substituir não é uma função conhecida
Balaji Birajdar
A mensagem de erro exata para o problema acima é "Erro de tempo de execução do Microsoft JScript: O objeto não suporta a propriedade ou o método 'substituir'"
Balaji Birajdar

Respostas:

539

Faça isso deste modo:

var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box...
value = value.replace(".", ":"); // value = 9:61
// can then use it as
$("#anothertext").val(value);

Atualizado para refletir a versão atual do jQuery. E também há muitas respostas aqui que se encaixariam melhor em qualquer mesma situação como essa. Você, como desenvolvedor, precisa saber qual é qual.

Substituir todas as ocorrências

Para substituir vários caracteres de uma vez usar alguma coisa como esta: name.replace(/&/g, "-"). Aqui estou substituindo todos os &caracteres por -. gsignifica "global"

Nota - pode ser necessário adicionar colchetes para evitar um erro -title.replace(/[+]/g, " ")

créditos vissu e Dante Cullari

Reigel
fonte
6
Eu tentei isso, mas ocorreu um erro como value.replace não é uma função :(
Nisanth Kumar
thephpdeveloper adicionou algo para corrigi-lo ... isso deve ser feito ... veja acima editado
Reigel
7
Isso não funcionará se tentarmos substituir mais de um valor por vez. :(
vissu
56
Para substituir vários caracteres de uma vez usar alguma coisa como esta: name.replace(/&/g, "-"). Aqui estou substituindo todos os '&' chars por '-'. "g" significa "global".
vissu 28/05
9
Nota - pode ser necessário adicionar colchetes para evitar um erro - #title.replace(/[+]/g, " ")
Dante Cullari
67

Provavelmente, a maneira mais elegante de fazer isso é fazê-lo em uma única etapa. Veja val().

$("#text").val(function(i, val) {
  return val.replace('.', ':');
});

comparado com:

var val = $("#text").val();
$("#text").val(val.replace('.', ':'));

Dos documentos:

.val( function(index, value) )

função (índice, valor) Uma função retornando o valor a ser definido.

Esse método geralmente é usado para definir os valores dos campos do formulário. Para <select multiple="multiple"> elementos, vários s podem ser selecionados passando uma matriz.

O .val()método permite definir o valor passando uma função. A partir do jQuery 1.4, a função recebe dois argumentos, o índice do elemento atual e seu valor atual:

$('input:text.items').val(function(index, value) {
  return value + ' ' + this.className;
});

Este exemplo anexa a cadeia "itens" aos valores das entradas de texto.

Isso requer o jQuery 1.4+.

cleto
fonte
mas como eu vejo, o cara só quer mudar o var valuevalor e não o valor na caixa de texto, como você sugeriu ...
Reigel
41

Eu amo o encadeamento de métodos do jQuery . Simplesmente faça ...

    var value = $("#text").val().replace('.',':');

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');
Shadrack B. Orina
fonte
17
isso não tem nada a ver com encadeamento jquery, na verdade. Depois de ligar .val(), é uma sequência regular.
Zerkms 16/04
19

Um liner simples:

$("#text").val( $("#text").val().replace(".", ":") );
VIDesignz
fonte
1
isso só funcionará se o valor for uma cadeia de caracteres ... e também, chamar $("#text")duas vezes não é uma boa prática ...
Reigel
o OP também não especificou que ele queria substituir o valor da $("#text"):)
Reigel
Comentário 1 ... Errado. Comentário 2 ... pense sobre a lógica de sua pergunta, não há necessidade de especificar.
VIDesignz
prová-lo .. e lembre-se, datadoJan 27 '10 at 10:16
Reigel
você nem conhece boas práticas .. você pode ler isso. stackoverflow.com/questions/3230727/…
Reigel
6

Isso pode ser feito com a função JavaScript regular replace().

value.replace(".", ":");
Anders
fonte
3
Não tenho certeza se eu perdi alguma coisa, mas desde que o valor vem da caixa de texto, é uma seqüência de caracteres não? Exemplo jsfiddle.net/xMBuA
Anders
4

Você pode usar funções JavaScript, como substituir, e pode envolver o código jQuery entre colchetes:

var value = ($("#text").val()).replace(".", ":");
kravits88
fonte
3
$("#text").val(function(i,v) { 
   return v.replace(".", ":"); 
});
andlrc
fonte
1
(9.61 + "").replace('.',':')

Ou se você 9.61já é uma string:

"9.61".replace('.',':')
VOCÊS
fonte