Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

Java ::: Dicas & Truques ::: Expressões Regulares

Como usar expressões regulares em Java - Expressões regulares para iniciantes

Quantidade de visualizações: 48772 vezes
O suporte a expressões regulares ou regex tem sido parte da plataforma Java desde a versão 1.4. Contidas no pacote java.util.regex, as classes regex suportam a comparação de padrões de forma similar à linguagem Perl, mas, usando classes e a sintáxe da linguagem Java. Todo o pacote se limita a três classes: Pattern, Matcher e PatternSyntaxException. A versão 1.5 introduziu a interface MatchResult.

Use as duas classes Pattern e Matcher juntas. Defina e expressão regular com a classe Pattern. Então use a classe Matcher para verificar o padrão em relação à fonte de entrada. Uma exceção é lançada quando o padrão tem um erro de sintáxe na expressão.

Estas classes não possuem construtores. Em vez disso, compilamos uma expressão regular para obter um padrão, e então usamos o Pattern retornado para obter seu Matcher baseado na fonte de entrada:

Pattern pattern = Pattern.compile(<regular expression>); 
Matcher matcher = pattern.matcher(<input source>);


Uma vez que tenhamos um Matcher, tipicamente processamos a fonte de entrada a fim de encontrarmos as similaridades contidas. Usa-se o método find() para localizar similaridades do padrão na fonte de entrada. Cada chamada a find() continua a partir do ponto onde a última chamada parou, ou na posição 0 para a primeira chamada. As similaridades encontradas são retornadas pelo método group():

while(matcher.find()){ 
  System.out.printf"Found: \"%s\" from %d to %d.%n", 
    matcher.group(), matcher.start(), matcher.end()); 
} 

O código a seguir mostra um programa básico de expressões regulares, que pede ao usuário que informe tanto a expressão regular quanto a string que será comparada:

import java.util.regex.*; 
import java.io.*;

public class Regex{ 
  public static void main(String args[]){ 
    Console console = System.console(); 

    // Obtém a expressão regular 
    String regex = console.readLine("%nInforme a expressão: "); 
    Pattern pattern = Pattern.compile(regex); 

    // Obtém a entrada 
    String source = console.readLine("Informe a entrada: "); 
    Matcher matcher = pattern.matcher(source); 

    // Mostra as similaridades 
    while(matcher.find()){ 
      System.out.printf("Encontrado: \"%s\" de %d à %d.%n", 
      matcher.group(), matcher.start(), matcher.end()); 
    } 
  } 
} 

Mas, o que realmente é uma expressão regular? A classe Pattern fornece detalhes mais profundos, mas, basicamente uma expressão regular é uma sequência de caracteres que tenta encontrar semelhanças em outra sequencia de caracteres. Por exemplo, podemos procurar o padrão literal de "eles" duplos "ll" na string "Hello, World". O programa anterior encontraria o padrão "ll" começando na posição 2 e terminando na posição 4. A posição final é a posição do próximo caractere depois do fim do padrão de semelhança.

Strings de padrão como "ll" não são muito interessantes, relatando somente onde elas estão literalmente na fonte de entrada. Padrões de expressões regulares podem incluir meta-caracteres especiais. Meta-caracteres fornecem habilidades poderosas de comparação. É possível usar os 15 caracteres "([{\^-$|]})?*+." como meta-caracteres em expressões regulares.

Alguns meta-caracteres indicam o agrupamento de caracteres. Por exemplo, os caracteres de colchetes [ e ] permitem especificar um grupo de caracteres nos quais uma similaridade ocorre se qualquer um dos caracteres entre colchetes for encontrado no texto. Por exemplo, o padrão "co[cl]a" retornará similaridade com "coca" e "cola". Ele não se igualará a "cocla", uma vez que [] é usado para igualar apenas um caractere. Veremos mais sobre quantificadores mais adiante, quando quisermos encontrar alguma coisa múltiplas vezes.

Além de tentar encontrar caracteres individuais, podemos usar os colchetes [ e ] para igualar uma faixa de caracteres, tais como as letras de j-z, definidas como [j-z]. Isso pode também ser combinado com um literal string, como em "foo[j-z]" que encontraria "fool", mas não encontraria "food", uma vez que l está na faixa de j à z e d não está. Podemos também usar o caractere ^ para representar negação, com um literal string ou uma faixa. O padrão "foo[^j-z]" encontrará palavras que começam como foo mas que não terminem com uma letra de j à z. Assim a string food agora seria encontrada. Faixas múltiplas podem ser combinadas como em [a-zA-Z] para informar as letras de a à z maiúsculas ou minúsculas.

Enquanto literais strings são ótimos como primeira lição sobre expressões regulares, as coisas mais típicas que a maioria das pessoas usam em expressões regulares são as classes de caracteres pré-definidos. É aqui que os meta-caracteres . e \ são importantes. O ponto . é usado para representar qualquer caractere. Assim, a expressão regular ".oney" encontraria money e honey, e qualquer outro conjunto de 5 caracteres que terminem em oney. O caractere \ por sua vez, é usado com outros caracteres para representar um conjunto completo de letras. Por exemplo, enquanto podemos usar [0-9] para representar um conjunto de dígitos, podemos também usar \d. Podemos ainda usar [^0-9] para representar um conjunto de caracteres que não sejam dígitos. Ou podemos usar o caractere \D. Todas estas strings de classes de caracteres são definidas na documentação da plataforma Java para a classe Pattern, uma vez que elas não são fáceis de serem lembradas. Eis aqui um sub-conjunto de algumas classes de caracteres pré-definidos especiais:

* \s -- whitespace (espaço em branco)
* \S -- non-whitespace (não seja espaço em branco)
* \w -- word character [a-zA-Z0-9] (caractere de palavra)
* \W -- non-word character (não caractere de palavra)
* \p{Punct} -- punctuation (pontuação)
* \p{Lower} -- lowercase [a-z] (minúsculas)
* \p{Upper} -- uppercase [A-Z] (maiúsculas)


Se você quiser usar uma destas strings no programa Regex mostrado acima, você as define como mostrado. \s se iguala ao espaço em branco. Se, contudo, você quiser definir a expressão regular via código, você precisa se lembrar que o caractere \ tem tratamento especial. Devemos escapar a string no código fonte:

String regexString = "\\s"; 

Aqui, os caracteres \\ representam uma única barra invertida na string. Há outras strings especiais para representar literais strings:

* \t -- tab (tabulação)
* \n -- newline (nova linha)
* \r -- carriage return (retorno de carro)
* \xhh -- hex character 0xhh (caractere hexadecimal)
* \uhhhh -- hex character 0xhhhh (caractere hexadecimal)


Os quantificadores tornam as expressões regulares mais interessantes, pelo menos quando combinados com outras expresssões tais como classes de caracteres. Por exemplo, se quisermos encontrar uma string de três caracteres de a-z, poderíamos usar o padrão "[a-z][a-z][a-z]". Mas não precisamos fazer isso. Em vez de repetir a string, adicionamos um quantificador após o padrão. Para este exemplo específico, "[a-z][a-z][a-z]" pode ser representado como "[a-z]{3}". Para uma quantidade específica, o número vai dentro das chaves {}. Podemos também usar ?, * ou + para representar zero ou uma vez, zero ou mais vezes, ou uma ou mais vezes, respectivamente.

O padrão [a-z]? encontra um caractere de a-z zero ou uma vez. O padrão [a-z]* encontra um caractere de a-z zero ou mais vezes. O padrão [a-z]+ encontra um caractere de a-z uma ou mais vezes.

Use quantificador com cuidado, prestando muita atenção aos quantificadores que permitem zero similaridades.

Quando usamos as chaves {} como quantificadores, devemos definir uma faixa. {3} significa exatamente 3 vezes, mas poderíamos dizer {3,}, que define no mínimo três vezes. O quantificador {3,5} encontra um padrão de 3 a 5 vezes.

Há mais sobre expressões regulares que o que mostramos aqui. A arte de usá-las envolve descobrir a expressão regular correta para a situação atual. Tente diferente expressões com o programa Regex e veja se ele encontra o que você está esperando. Certifique-se de tentar diferentes quantificadores para entender realmente suas diferenças. Observe que quantificadores geralmente tentam incluir o maior número de caracteres para uma similaridade possível.


Java ::: Dicas & Truques ::: Strings e Caracteres

Como comparar strings em Java usando o método equals() da classe String

Quantidade de visualizações: 369 vezes
Em várias ocasiões nós precisamos efetuar a comparação de textos, frases ou palavras em Java. Para isso nós podemos usar o método equals() da classe String. Esta função recebe as duas strings a serem testadas e retorna true se as duas strings forem iguais e false em caso contrário.

Veja um exemplo de seu uso:

// Este exemplo mostra como comparar duas strings
// em Java usando o método equals()

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args) {
    // vamos declarar duas strings
    String s1 = "Gosto de Java";
    String s2 = "Gosto de java";
    
    // e agora vamos verificar se as duas são iguais
    if(s1.equals(s2)){
      System.out.println("As duas strings são iguais");
    }
    else{
      System.out.println("As duas strings são diferentes");
    }
      
    System.exit(0);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

As duas strings são diferentes.

É importante ter em mente que o método equals() diferencia maiúsculas de minúsculas.


VB.NET ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres

Exercícios Resolvidos de VB.NET - Como retornar o código ASCII associado a um caractere em VB.NET - Ler um caractere e retornar o código ASCII correspondente

Quantidade de visualizações: 604 vezes
Pergunta/Tarefa:

Escreva um programa VB.NET que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente.

Sua saída deverá ser parecida com:

Informe um caractere: A
Você informou o caractere: A
O código ASCII correspondente é: 65
Resposta/Solução:

Veja a resolução comentada deste exercício em VB.NET:

Imports System

Module Program
  ' função principal do programa VB.NET
  Sub Main(args As String())
    ' vamos pedir para o usuário informar uma letra, símbolo ou pontuação
    Console.Write("Informe um caractere: ")

    ' vamos ler o caractere informado
    Dim caractere As Char = Console.ReadLine()(0)

    ' agora vamos obter o código ASCII correspondente
    Dim codigo As Integer = Asc(caractere)

    ' e mostramos o resultado
    Console.WriteLine("Você informou o caractere: " & caractere)
    Console.WriteLine("O código ASCII correspondente é: " & codigo)

    Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
    ' pausa o programa
    Console.ReadKey()
  End Sub
End Module

O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos.


C# ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string é null ou vazia em C# usando a função IsNullOrEmpty() da classe String

Quantidade de visualizações: 23694 vezes
Em algumas situações nós queremos verificar se uma variável do tipo string está null ou vazia (não contém nem mesmo o caractere de espaço ou quebra de linha). Para isso nós podemos usar o método IsNullOrEmpty() da classe String da linguagem C#.

Veja um trecho de código no qual temos uma string nula e uma string vazia. Observe os resultados retornados pela função:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string palavra1 = null;
      string palavra2 = "";

      if (String.IsNullOrEmpty(palavra1)) {
        Console.WriteLine("palavra1 é null ou vazia");
      }

      if (String.IsNullOrEmpty(palavra2)) {
        Console.WriteLine("palavra2 é null ou vazia");
      }
      
      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

palavra1 é null ou vazia
palavra2 é null ou vazia


JavaScript ::: Dicas & Truques ::: Formatação de datas, strings e números

Como exibir apenas dois dígitos após o ponto decimal em JavaScript usando a função toFixed() do objeto Number

Quantidade de visualizações: 12785 vezes
Nesta dica mostrarei como podemos usar a função toFixed() do objeto Number da linguagem JavaScript para convertermos um valor de ponto flutuante em uma string (em texto). Durante a conversão nós vamos especificar que queremos apenas dois dígitos depois do ponto decimal.

Veja o código JavaScript completo para o exemplo:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
  charset=iso-8859-1" />
<title>Estudos JavaScript</title>
</head>
<body>
  
<script type="text/javascript">
  // vamos obter o valor de 
  // PI 3.141592653589793
  var valor = Math.PI;
  document.write("PI: " + valor);
  
  // agora vamos converter o valor de PI para
  // string e arredondar para o número de
  // decimais desejados
  var res = valor.toFixed(2);
  document.write("<br>Resultado: " + res);
</script>
   
</body>
</html>

Ao executar este código JavaScript nós teremos o seguinte resultado:

PI: 3.141592653589793
Resultado: 3.14


Java ::: Pacote java.lang ::: String

Java para iniciantes - Como usar o método replace() da classe String para efetuar a substituição de caracteres em uma string

Quantidade de visualizações: 9701 vezes
Em algumas situações gostaríamos de substituir caracteres (não substrings) em uma string. Isso pode ser feito por meio do método replace() da classe String. Veja sua assinatura:

public String replace(char oldChar, char newChar)
O parâmetro oldChar representa o caractere que será substituído pelo valor no parâmetro newChar. Note que todas as ocorrências de oldChar serão substituídas por newChar. O resultado será um novo objeto String com as substituições aplicadas. Se não houver substituições a string atual é retornada.

Veja um trecho de código no qual substituímos todas as letras "a" por "e" e retornamos uma nova string com as substituições:

public class Estudos {
  public static void main(String[] args) {
    String frase = "Programar em Java é muito bom";
    System.out.println("Frase original: " + frase);
    
    // vamos substituir todas as letras "a" por "e"
    frase = frase.replace('a', 'e');
    System.out.println("Depois da substituição: " + frase);
  }
}

Após a execução deste código teremos o seguinte resultado:

Frase original: Programar em Java é muito bom
Depois da substituição: Progremer em Jeve é muito bom



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Um método recursivo que recebe um valor inteiro e o exibe na ordem inversa

Quantidade de visualizações: 4587 vezes
Pergunta/Tarefa:

Escreva um método recursivo que recebe um valor inteiro (com qualquer quantidade de dígitos) e o exibe na ordem inversa. Se o método receber o valor 467, o valor inverso será 764. Seu método deverá possuir a seguinte assinatura:

public static void exibirInverso(int valor){
  // sua implementação aqui
}
Observe que você poderá usar, na resolução, somente os operadores aritméticos. Não é permitido o uso de métodos adicionais ou presentes em classes da plataforma Java.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 932
O valor invertido é: 239
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package exercicio;

import java.util.Scanner;

public class Exercicio{
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // solicita um valor inteiro ao usuário
    System.out.print("Informe um valor inteiro: ");
    // lê o valor informado
    int numero = Integer.parseInt(entrada.nextLine());
    // exibe o valor na ordem invertida
    System.out.print("O valor invertido é: ");
    exibirInverso(numero);
    System.out.println("\n");
  }
  
  // método recursivo que recebe um valor inteiro e o exibe na ordem
  // inversa
  public static void exibirInverso(int valor){
    // a parada da recursividade é o valor igual a 0
    if(valor != 0){
      System.out.print(valor % 10);
      valor = valor / 10;
      exibirInverso(valor); // efetua uma nova chamada recursiva
    }
  }
}



Delphi ::: Dicas & Truques ::: Rotinas de Conversão

Como converter um valor inteiro em um caractere usando a função Chr() do Delphi

Quantidade de visualizações: 14402 vezes
Em algumas situações precisamos converter um valor inteiro em um caractere, ou seja, uma letra, símbolo, dígito, etc. Para isso podemos usar a função Chr() do Delphi. Esta função recebe um valor inteiro e retorna seu caractere correspondente de acordo com a tabela ASCII.

Vamos ver um exemplo? Eis um trecho de código que declara uma variável do tipo Integer e depois a converte para um caractere:

procedure TForm3.Button2Click(Sender: TObject);
var
  valor: Integer;
  letra: Char;
begin
  // vamos atribuir à variável valor o número 70
  valor := 70;

  // vamos converter este valor para um caractere
  // o resultado será a letra F
  letra := Chr(valor);

  // vamos mostrar o resultado
  ShowMessage(letra);
end;

Ao executar este código teremos o valor 70 convertido para a letra "F". Note que também é possível converter um valor inteiro em um caractere usando uma conversão forçada (cast) para o tipo Char. Veja:

procedure TForm3.Button2Click(Sender: TObject);
var
  valor: Integer;
  letra: Char;
begin
  // vamos atribuir à variável valor o número 70
  valor := 70;

  // vamos converter este valor para um caractere
  // o resultado será a letra F
  letra := Char(valor);

  // vamos mostrar o resultado
  ShowMessage(letra);
end;

Neste segundo trecho de código nós conseguimos o mesmo resultado do código anterior, mas, sem usar a função Chr().


Java ::: Dicas & Truques ::: Matemática e Estatística

Como testar se um número é primo em Java

Quantidade de visualizações: 2631 vezes
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos.

É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par.

Veja agora um código Java completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não:

package arquivodecodigos;
 
import java.util.Scanner;
 
public class Estudos{
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
     
    // vamos solicitar um número inteiro positivo
    System.out.print("Informe um número inteiro positivo: ");
    int numero = Integer.parseInt(entrada.nextLine());
    
    // o número é negativo?
    if(numero < 0){
      System.out.println("Número inválido.");
    }
    // é 0 ou 1?
    else if((numero == 0) || (numero == 1)){
      System.out.println("Número válido, mas não é primo. ");
    }
    // passou até aqui. Vamos testar se o número é primo
    else{
      boolean primo = true;
      for (int i = 2; i <= (numero / 2); i++){
        // se passar no teste, não é primo
        if (numero % i == 0) {
          primo = false;
          break;
        }
      }
      
      if(primo){
        System.out.println("O número informado é primo");
      }
      else{
        System.out.println("O número informado não é primo");
      }
    }
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Informe um número inteiro positivo: 9
O número informado não é primo


C# ::: Dicas & Truques ::: Mouse e Teclado

Como desenhar em um formulário C# usando o mouse - Código-fonte completo

Quantidade de visualizações: 10378 vezes
Quando estamos estudando os eventos do mouse, a primeira idéia que vem à cabeça é como usar tais eventos para escrever um programa de desenho. O código abaixo mostra como isso pode ser feito.

Aqui nós usamos três eventos do mouse: MouseDown (ocorre quando o botão do mouse está pressionado), MouseUp (ocorre quando o botão do mouse é liberado) e MouseMove (ocorre quando movimentamos o mouse na superfície de um componente).

Dessa forma, quando o botão do mouse é pressionado nós ativamos uma variável indicando que o movimento do mouse pode vir acompanhado de um desenho. Quando o botão do mouse é liberado nós definimos o valor desta variável como false. Isso faz com que o desenho só seja realizado se movermos o mouse com o botão pressionado.

Veja o código:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EstudosWindowForms {
  public partial class Form1 : Form {
    // indica se podemos ou não desenhar no formulário
    bool pintar = false;

    public Form1() {
      InitializeComponent();
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e) {
      // podemos iniciar o desenho 
      pintar = true;
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e) {
      // vamos parar de desenhar 
      pintar = false;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e) {
      // vamos desenhar?
      if (pintar) { // o botão do mouse está pressionado
        // vamos desenhar um círculo na posição atual do mouse 
        Graphics g = CreateGraphics();
        g.FillEllipse(new SolidBrush(Color.Maroon), e.X, e.Y, 5, 5);
        g.Dispose();
      }
    }
  }
}


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby


E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90


© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 123 usuários muito felizes estudando em nosso site.