Jump to content


Photo

Formatar String Numérica...


  • Faça o login para participar
14 replies to this topic

#1 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 28/03/2008, 18:30

Estou com problema em uma ER que faz iso pra mim.

A ER é essa:

/(.{3})/g
E eu a substituo por $1., no método replace()

Se eu tiver uma string numérica de 9 dígitos formata assim: 409.860.000.
O ponto no final está errado.

Se for menor, fica: 409.860.00
O certo seria o contrário disso: 40.986.000, fazendo a "contagem" do fim pro começo

E vocês podem imaginar como fica se as string forem menores ainda né?

Como fazer algo semelhante?

NOTA: Aparentemente, métodos "prototypezados" não podem ser penduradaos nas funções da jQuery (que estou usando maciçamente)

#2 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 28/03/2008, 19:27

Adapte como bem querer:

var strNumber = '40986000';

while (strNumber.match(/^\d\d{3}/)){
	strNumber = strNumber.replace(/(\d)(\d{3}(\.|,|$))/, '$1.$2');
}

alert(strNumber);
[]’s :DAté mais

#3 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/03/2008, 08:34

Alguém pode me explicar essa ER?

Eu sei o significado de \d, início de linha, grupos... mas não entendi bulhufas de como ela funciona :( Nem tanto o match como o replace.

Se alguém puder dar uma luz (y)
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#4 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2008, 09:13

Essa eu sei, ou quase.

o match "casa" e o replace substitui.

O que o Paulo fez foi especificar "enquanto a ER casar na string numérica, substitui as ocorrências pelo... bem o finalzinho não entendi :P"

#5 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/03/2008, 09:42

Isso eu sei :P

Não entendi foi a ER em si... o que ele quer dizer com a ER tanto no match quanto no replace ;)

Isto:

/^\d\d{3}/

e isso:

/(\d)(\d{3}(\.|,|$))/

Edição feita por: Firehalk, 29/03/2008, 09:43.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#6 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2008, 11:52

O segundo não entendi também, só sei que funcionou :rolleyes:

Mas o primeiro, ele pegou dois dígitos a partir do começo em grupos de três em três.

Enquanto isso casar, ele vai adicionando os pontinhos.

Por falar nisso, esqueci de agradecer Paulo. Então, valeu!

#7 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/03/2008, 15:02

Pensando aqui um pouco mais acho que entendi a primeira:

\d\d{3}

\d = Qualquer dígito sozinho.

Ou seja, vai procurar por qualquer dígito sozinho, que seja acompanhado de mais outros 3 dígitos. (ex: 1.000, 2.342, 9.093). Essa seria a condição do match. 231, 123, 128, por exemplo, não bateriam.

Não é isso?

Aliás, \d é a mesma coisa que dizer [0-9] ? Tô boiando nisso :huh:

Se bem que teria mais sentido então [1-9]\.?[0-9]{3} se fosse isso mesmo... Não pode ser isso também então, que eu pensei.

Já a segunda eu não entendi a 2ª parte ainda.

Edição feita por: Firehalk, 29/03/2008, 15:06.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 29/03/2008, 17:39

Eita! :P

Na verdade, como eu estava com o tempo apertado, só tive tempo para vasculhar minha biblioteca de snippets. :)

Dei uma otimizada no exemplo, de acordo com o que foi proposto, e comentei:

var strNumber = '12345678';

while (strNumber.match(/^\d{4}/)){ // enquanto houver 4 dígitos sem separador de milhar
	strNumber = strNumber.replace(/(\d)(\d{3}(\.|$))/, '$1.$2'); // separar o dígito de milhar dos dígitos de centena com o ponto, de trás para frente!
}

alert(strNumber);
De trás para frente? Sim.

(\d)(\d{3}(\.|$)) = (\d)(\d{3}\.)|(\d)(\d{3}$)

Como de início não haverá ponto, a ER irá olhar de trás pra frente ($). Depois, irá fazer o mesmo procedimento com o ponto, até não haver mais possibilidades.

Ah, $1.$2 é o dígito de milhar acrescido do ponto e dos dígitos de centena, é a substituição que determina o fim da iteração. ;)

Exemplos:

123 = 123 // não casa o match
1234 = 1.234 // casa o match e o replace, pelo final ($)
1234567 = 1.234.567 // casa o match e o replace, primeiro pelo final ($) e depois pelo ponto (separador de milhar) que fora inserido na primeira iteração do while
Enfim, espero que tenham captado a idéia. :blink:

Pra outra ER só haviam duas diferenças. A primeira é a ER do match, que podia ser \d{4} apenas. A segunda a vírgula no grupo que casa as centenas. Ela estava ali pois o snippet que eu tinha aqui permitia ponto e vírgula como separadores de milhar.

[]’s :DAté mais

#9 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2008, 18:30

Bom, muitíssimo utilíssima :P

Eu empacotei pra usar como função, isso não é nada demais então seria interessante tu fazer (já que acredito você ser o autor) e postar no banco de funções (se é que JavaScript tem uma sala dessas :blink:)

A propósito, essa Biblioteca de Snippets é secreta?

#10 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 29/03/2008, 19:40

Eu empacotei pra usar como função, isso não é nada demais então seria interessante tu fazer (já que acredito você ser o autor) e postar no banco de funções (se é que JavaScript tem uma sala dessas :blink:)

JavaScript tem banco de funções sim, mas fica sob o fórum (X)HTML, CSS, JavaScript e Metodologias. :)

Vou tirar um tempinho daqui a pouco e posto ela no banco. A propósito, sobre ser autor da função, é algo relativo. Eu costumo salvar trechos de vários códigos de várias linguagens que vejo em vários lugares. :P
Esta idéia eu tirei de um código que eu havia visto antes, não sei de onde. O que importa é compreender o que faz o trecho do código. Até mesmo porque eu poderia ter tido a mesma idéia que o autor teve, sem ter visto o código dele antes. Não se trata de uma "cópia", é um aprendizado orientado a modelos de solução. :D
Falando em biblioteca de snippets, secreta não é. Só é imensurável. É DVD ali, papel jogado acolá, um favorito perdido aqui, um e-mail armazenado lá... Uma bagunça sem tamanhos. Qualquer hora eu tomo vergonha na cara e crio um banco de dados para fazer este mar de soluções funcionar na velocidade do pensamento... :assobio:

Aliás, isto é algo que todos deveriam fazer. Só prezo para que não sejam tão perdidos quanto eu! :rotfl2::

[]’s :DAté mais

#11 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 22/09/2017, 04:10

Kennel Cough And Amoxicillin online pharmacy Viagra Kaugummi Kaufen Ordinare Cialis Italia Cialis Para Se Utiliza cialis buy online Cialis 10 Mg Tadalafil Filmtabletten
Propecia For Sale Online Pharmacy cialis Order Medications Online
Online Propecia 1 Mg Propecia Generique En Pharmacie Virgara Sales
Cialis Costo Farmacia <a href=http://cialtobuy.com>cialis price</a> 10 Mg Cialis

#12 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 13/10/2017, 20:07

Amoxicillin Capsule Cheap Viagra Us Companies Only viagra Ampicillin With Out An Rx
Cialis Per Donna cialis Priligy Dapoxetina Generico Amoxicillin Taken For Uvulitis Betnovate Ointment

#13 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 31/10/2017, 08:09

Foro Priligy 30 Mg Levitra Germany Priligy cialis Propecia Kvinder Vente Nolvadex
Effexor Online Order Mail Order Pharmacy Levitra levitra 60 mg Propecia Dosage Women Koi Amoxicillin Dosage Online

#14 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 31/10/2017, 08:30

Amoxicillin Canadian Pharmacy Achat Kamagra Bordeaux cialis Cheap Flagyl Keflex Cod Direct Bentyl Next Day Medicine Mastercard Accepted Zithromax At Walmart

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 22/11/2017, 17:33

Fedex Shipping Zentel Direct Amex Propecia Prix Pharmacie viagra Purchasing Zentel Comparaison Prix Cialis Cod Generic Doxycycline
Canadianphamarcy24 viagra Amoxicillin Synthesis




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq