Submarino.com.br

Implementação do String.format do .Net C# em JavaScript

Posted by mfedatto on ago 31st, 2009

No post anterior falei sobre o String.Format do .Net Framework e mostrei alguns exemplos. Agora segue uma implementação bastante interessante do String.format em JavaScript.

String.format = function() {
  var args = String.format.arguments;
  var ret  = args[0];

  for (var i = 0; i < args.length; i++) {
    var find = "{" + String(i - 1) + "}";

    while (ret.indexOf(find) > -1) {
      ret = ret.replace(find, args[i]);
    }
  }

  return ret;
}


Esta implementação também utiliza de forma bastante clara a propriedade arguments das funções JavaScript, que permite o tratamento de n argumentos em uma função.

Validação de CNPJ usando JavaScript (IsCNPJ(cnpj);)

Posted by mfedatto on jul 16th, 2009

A cerca de 2 anos atrás, cansado de ter de usar diversas funções capengas para validação de CNPJ com JavaScript e ter que ficar remendando as funções por conta dos bugs, decidi eu mesmo estudar e desenvolver uma função mais simples e funcional para tal. Segue a função com algumas explicações simples do processo.

function IsCNPJ(cnpj) {<br />
  // Retornando falso para valores inválidos<br />
  if (cnpj == undefined || cnpj == null || isNaN(cnpj.replace(/\D/g, &quot;&quot;))<br />
    || cnpj.replace(/\D/g, &quot;&quot;).length != 14) {<br />
    return false;<br />
  }</p>
<p>  // Definindo vetores e Dac's<br />
  var cnpj     = cnpj.replace(/\D/g, &quot;&quot;).substring(0, 12).split(&quot;&quot;);<br />
  var contDac1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];<br />
  var contDac2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];<br />
  var dac1     = 0;<br />
  var dac2     = 0;</p>
<p>  // Efetuando soma da multiplicação dos valores para o primeiro dígito do Dac<br />
  for (var iDac1 = 0; iDac1 &lt; contDac1.length; iDac1++) {<br />
    dac1 += cnpj[iDac1] * contDac1[iDac1];<br />
  }</p>
<p>  // Resgatando resto da divisão para definição do primeiro dígito do Dac<br />
  dac1 = dac1 % 11;</p>
<p>  // Verificando se o resto da divisão é menor que 2<br />
  if (dac1 &lt; 2) {<br />
    // Atribuir 0 ao primeiro dígito do Dac se o resto da divisão for 0 ou 1<br />
    dac1 = 0;<br />
  }<br />
  else {<br />
    // Atribuir 11 subtraído do resto da divisão para o primeiro dígito do<br />
    // Dac<br />
    dac1 = 11 - dac1;<br />
  }</p>
<p>  // Adicionar ao vetor de algarismos do CNPJ o primeiro dígito do Dac<br />
  cnpj.push(dac1);</p>
<p>  // Efetuando soma da multiplicação dos valores para o segundo dígito do Dac<br />
  for (var iDac2 = 0; iDac2 &lt; contDac2.length; iDac2++) {<br />
    dac2 += cnpj[iDac2] * contDac2[iDac2];<br />
  }</p>
<p>  // Resgatando resto da divisão para definição do segundo dígito do Dac<br />
  dac2 = dac2 % 11;</p>
<p>  // Verificando se o resto da divisão é menor que 2<br />
  if (dac2 &lt; 2) {<br />
    // Atribuir 0 ao segundo dígito do Dac se o resto da divisão for 0 ou 1<br />
    dac2 = 0;<br />
  }<br />
  else {<br />
    // Atribuir 11 subtraído do resto da divisão para o segundo dígito do<br />
    // Dac<br />
    dac2 = 11 - dac2;<br />
  }</p>
<p>  // Adicionar ao vetor de algarismos do CNPJ o segundo dígito do Dac<br />
  cnpj.push(dac2);</p>
<p>  // Verificando se a união do CNPJ obtido se assemelha ao CNPJ fornecido<br />
  return (cnpj.join(&quot;&quot;) == cnpj.replace(/\D/g, &quot;&quot;));<br />
}

See ya!!!

Implementação de um IsDate em JavaScript

Posted by mfedatto on jul 14th, 2009

Quando estava começando com codificação JavaScript precisei diversas vezes de uma função para validar se uma determinada data é válida. Saí procurando na internet e encontrei diversas implementações gigantescas e cheias de falhas. Codificação confusa, mal feita e pouco funcional. Após usar algumas vezes algumas destas funções e me confrontar com vários bugs decidi estudar o tratamento de data do JavaScript para saber se era realmente necessário toda aquela confusão para fazer uma validação de uma data. Continue Reading »

Solução ao replace do JavaScript que só substitui a primeira ocorrência

Posted by mfedatto on jul 8th, 2009

Verifiquei em meus relatórios de acesso do Google Analytics que chegaram ao meu blog ao efetuar uma pesquisa no Google por “comando replace javascript so substitui a primeira ocorrencia” e me lembrei que este foi o motivo que me levou a descobrir e estuda expressões regulares e é um problema que realmente aflige todos os desenvolvedores web em algum momento. Para os que não têm medo de JavaScript e não tentam de tudo para resolver seus problemas apenas com a programação server isso acontece bem mais cedo. Continue Reading »

Verificação de caracter duplicado em JavaScript utilizando Expressão Regular

Posted by mfedatto on jul 6th, 2009

Portando mais um artigo do JavaScript House pra cá, vou postar agora um fonte JavaScript para verificar se há caracteres repetidos em uma string JavaScript utilizando expressão regular.

Indicadores utilizados:

( ) // Tag (variável)
.  // Qualquer caracter
*  // Qualquer quantidade de ocorrência
\  // Indicador de variável

Continue Reading »

Implementação do Trim() do VB e ASP em JavaScript

Posted by mfedatto on jul 2nd, 2009

Uma das grandes dificuldades encontradas por programadores ASP e ASP.Net Visual Basic ao trabalhar valores no JavaScript é a falta que faz o Trim() – função que elimina os espaços em branco das extremidades dos textos - do VB (ASP, VBScript, VBA), já que não há nenhuma implementação nativa no JavaScript. Continue Reading »