Javascript - Retirando espaços de string (função trim)

by Luiz Paulo | dezembro 4, 2008 | 4 Comments »

Veja abaixo algumas soluções para retirar espaços do início e final de strings.

Exemplos simples

Exemplo curto (funções com expressão regular):

	//trim completo
	function trim(str) {
		return str.replace(/^\s+|\s+$/g,"");
	}
 
	//left trim
	function ltrim(str) {
		return str.replace(/^\s+/,"");
	}
 
	//right trim
	function rtrim(str) {
		return str.replace(/\s+$/,"");
	}
 
	alert(trim("           TEXTO          "));

Exemplo curto (métodos da string com expressão regular):
Essa solução é bem mais elegante!

	//trim completo
	String.prototype.trim = function () {
		return this.replace(/^\s+|\s+$/g,"");
	}
 
	//left trim
	String.prototype.ltrim = function () {
		return this.replace(/^\s+/,"");
	}
 
	//right trim
	String.prototype.rtrim = function () {
		return this.replace(/\s+$/,"");
	}
	alert("           TEXTO          ".trim());

Outras soluções

Exemplo longo

	function trim (str)
	{
		var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
		for (var i = 0; i < str.length; i++)
		{
			if (whitespace.indexOf(str.charAt(i)) == -1)
			{
				str = str.substring(i);
				break;
			}
		}
 
		for (i = str.length - 1; i >= 0; i--)
		{
			if (whitespace.indexOf(str.charAt(i)) == -1)
			{
				str = str.substring(0, i + 1);
				break;
			}
		}
	    return whitespace.indexOf(str.charAt(0)) == -1 ? str : '';
	}

Outro exemplo

	function isWhitespace(charToCheck) {
		var whitespaceChars = " \t\n\r\f";
		return (whitespaceChars.indexOf(charToCheck) != -1);
	}
 
	//left trim
	function ltrim(str) {
		for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
		return str.substring(k, str.length);
	}
 
	//right trim
	function rtrim(str) {
		for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
		return str.substring(0,j+1);
	}
 
	//trim completo
	function trim(str) {
		return ltrim(rtrim(str));
	}

Caso queira se aprofundar no assunto, aconselho a leitura do artigo Faster JavaScript Trim que mostra vários testes de performance no IE e FF.

Façam bom proveito!

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , , ,

Javascript - Último dia do mês

by Luiz Paulo | novembro 14, 2008 | 15 Comments »

Essa semana, eu precisei de uma solução em Javascript para encontrar o "último dia do mês" ou "quantidade de dias do mês" como preferir. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas.

Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar.

Primeiro vou postar as soluções sérias para o pessoal que está pesquisando e precisa utilizar em seu código

Soluções simples

Exemplo longo (função):

function daysInMonth(month,year) {
	var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (month != 2) return m[month - 1];
	if (year % 4 != 0) return m[1];
	if (year % 100 == 0 && year%400 != 0) return m[1];
 
	return m[1] + 1;
}

Exemplo curto (função):
Aqui está a grande sacada do javaScript, que interpreta o 0(zero) como "o dia antes do dia primeiro" que obviamente é o último dia do mês anterior.

function daysInMonth(month,year) {
	var dd = new Date(year, month, 0);
	return dd.getDate();
}

Exemplo curto (inline):

var lastDay = (new Date(year, month, 0)).getDate();

Soluções criativas

Não se assustem, mas as soluções citadas abaixo funcionam!

Solução utilizando Switch:

function getLastDayOfMonth(month,year)
{
	var day;
 
	switch(month)
	{
		case 1 :
		case 3 :
		case 5 :
		case 7 :
		case 8 :
		case 10:
		case 12:
			day = 31;
			break;
		case 4 :
		case 6 :
		case 9 :
		case 11:
		   	day = 30;
			break;
		case 2 :
			if( ( (year % 4 == 0) && ( year % 100 != 0) ) || (year % 400 == 0) )
				day = 29;
			else
				day = 28;
			break;
 
	}
	return day;
}

Essa é legal

function anoBissexto(anoCompleto) 
{
	if(!(anoCompleto%4) && (anoCompleto%100 || !(anoCompleto%400))) return true;
	return false;
}
function diasNoMes(mes,ano)
{
	var var_type=typeof mes;
	if(var_type != "number" && var_type != "string") return false;
	if(var_type == "number" && (mes > 11 || mes < 0) && !isInt(mes)) return false;
	var eng_args_allowed = "january-february-march-april-may-june-july-august-september-october-november-december";
	var bra_args_allowed = "janeiro-fevereiro-marçomarco-abril-maio-junho-julho-agosto-setembro-outubro-novembro-dezembro";
	var vet_eng_args_allowed = eng_args_allowed.split("-");
	var vet_bra_args_allowed = bra_args_allowed.split("-");
	var datahj = new Date();
	var anohj = datahj.getFullYear();
	var dias = [31,anoBissexto(ano)?29:28,31,30,31,30,31,31,30,31,30,31];
 
	if(var_type == "string")
	{
		indice_eng = keyPosMatch(vet_eng_args_allowed,mes);
		indice_bra = keyPosMatch(vet_bra_args_allowed,mes);
		if(indice_eng>=0) return dias[indice_eng];
		if(indice_bra>=0) return dias[indice_bra];
		return false;
	}
	else return dias[mes];
}

Façam bom proveito!

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , , , ,

CheatSheet - Guia rápido sobre Jquery

by Luiz Paulo | setembro 17, 2008 | 1 Comment »

O Cheat Sheet é um resumo de um assunto específico que pode ser utilizado como guia rápido. Nele você pode encontrar sintaxes, códigos, exemplos, conceitos e dicas.

Não podemos considerá-lo um manual completo pois é bem compacto, mas quebra bastante o galho! Além de úteis, normalmente são feitos com visual agradável, podendo ser impressos e facilmente colados no seu escritório.

Nesse primeiro post, você poderá baixar algumas versões do jQuery no formato Cheat Sheet.
Façam bom proveito!

Visual jQuery 1.2.6 (formato HTML)
Visual jQuery 1.2.6 (formato HTML)

CheatSheet jQuery 1.2 (formato PNG / versão mobile)
CheatSheet jQuery 1.2 (formato PNG / versão mobile)

CheatSheet jQuery 1.2 (formato PNG / 2 cores)
CheatSheet jQuery 1.2 (formato PNG / 2 cores)

CheatSheet jQuery 1.2 (formato PDF)
CheatSheet jQuery 1.2 (formato PDF)

CheatSheet jQuery 1.1.4 (formato PDF)
CheatSheet jQuery 1.1.4 (formato PDF)

Categorias: CheatSheet, Desenvolvimento web, JavaScript, Tendências
Tags: , , , , ,

jBugger – Faça debug de código em qualquer browser

by Luiz Paulo | julho 27, 2008 | 1 Comment »

Todo desenvolvedor com algum tempo na área já usou ou ouviu falar no Firebug que é indiscutivelmente a melhor ferramenta de desenvolvimento disponível no momento. Só tem um problema, o FireBug só funciona como uma extensão do FireFox. Quando acontece algum erro de JavaScript no IE ou em qualquer outro browser, temos que nos virar de outra forma. Até existem outras ferramentas disponíveis, como consoles, plugins para IE, entre outras. Até o Firebug tem versão light em javascript. Mas todas com pouquíssimos recursos.

A falta de uma boa ferramenta que possibilite o debug de código que dê suporte a qualquer plataforma me incentivou a desenvolver o jBugger.

Introdução

O jBugger é uma ferramenta que possibilita o debug de códigos web em qualquer plataforma. Foi homologado nos principais browsers atualmente disponíveis no mercado (Firefox, Internet Explorer, Safari e Opera). Desenvolvido em Javascript e utilização do framework jQuery como base.

A ferramenta

Nessa primeira versão o jBugger será liberado com as seguintes ferramentas:

  • Console para debug execução de comandos
  • Console para visualização do HTML da página
  • Comandos chave como cls, clear, html
  • Personalização de tema
  • Internacionalização

O jBugger foi desenvolvido a princípio apenas como um console, mas percebi que poderia ser muito mais do que isso, hoje, na versão 0.1 (primeira disponível para download) é uma ferramenta totalmente extensível, possibilitando a colaboração de qualquer desenvolvedor para desenvolvimento de plugins e evolução da ferramenta.

Ainda não tive tempo, mas em breve o jBugger terá sua própria página. Onde disponibilizarei documentação com seus recursos e possibilidades.

Testar o jBugger
Baixar agora

Categorias: Browser, Desenvolvimento web, Ferramentas, JavaScript
Tags: , , , , , , , , , , ,


 

Sobre

Foto Luiz Paulo

Sou desenvolvedor web desde 2000, atuei em grandes projetos web2.0. Atualmente trabalho na Automatos junto à equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

Para saber mais sobre mim, acesse Meus Links ›


Valid XHTML 1.0 Strict Valid CSS!

Luiz Paulo | tecnologia web