C# ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir todas as ocorrências de caracteres ou substrings em uma string C# usando o método Replace() da classe StringQuantidade de visualizações: 11049 vezes |
|
Em várias situações nós precisamos substituir as ocorrências de uma letra ou parte de palavras ou frases. Para isso nós podemos usar o método Replace() da classe String da linguagem C#. Este método recebe o caractere ou substring a ser substituído e o novo caractere ou substring, e retorna uma nova String. Veja um trecho de código C# que mostra como substituir todas as ocorrências de caracteres ou substrings em uma string:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
// uma frase
string frase = "Gosto muito de C# pois C# é bom demais";
// substitui "C#" por "VB.NET"
string frase2 = frase.Replace("C#", "VB.NET");
// mostra o resultado
Console.WriteLine("Frase original: " + frase);
Console.WriteLine("Com substituições: " + frase2);
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código C# nós teremos o seguinte resultado: Frase original: Gosto muito de C# pois C# é bom demais Com substituições: Gosto muito de VB.NET pois VB.NET é bom demais |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como subtrair dias de uma data em JavaScript - Data e horas em JavaScriptQuantidade de visualizações: 17093 vezes |
|
Em algumas situações, principalmente quando estamos desenvolvendo aplicações que envolvem datas, horas e calendários em JavaScript, nós precisamos subtrair dias de uma data. Nesta dica eu mostro como isso pode ser feito. Veja o código completo abaixo:
<html>
<head>
<title>Estudando JavaScript</title>
</head>
<body>
<script type="text/javascript">
function subtrairDias(data, dias){
return new Date(data.getTime() -
(dias * 24 * 60 * 60 * 1000));
}
document.write('Hoje é: ' +
(new Date()).toLocaleDateString() + '<br>');
document.write('5 dias atrás era: ' +
subtrairDias(new Date(), 5).toLocaleDateString());
</script>
</body>
</html>
Ao executarmos este código nós teremos o seguinte resultado: Hoje é: 25/03/2021 5 dias atrás era: 20/03/2021 |
Java ::: Pacote java.awt ::: Graphics |
Como desenhar linhas em determinados ângulos usando o método drawLine() da classe Graphics - Computação Gráfica em JavaQuantidade de visualizações: 14135 vezes |
É possível usar o método drawLine() da classe Graphics para desenhar linhas em determinados ângulos. Observe atentamente a assinatura deste método:public abstract void drawLine(int x1, int y1, int x2, int y2) Aqui x1 e x2 representam as coordenadas iniciais da linha e x2 e y2 representam as coordenadas finais. Assim, vamos analisar a fórmula matemática que permite definir o ângulo de desenho. Comece definindo os valores para as coordenadas iniciais x1 e y1, o ângulo desejado e o comprimento da linha: int x1 = 30; int y1 = 50; int ang = 0; int comp = 100; Vamos começar obtendo a coordenada x final, que chamaremos de x2. Já sabemos que o ângulo é 0, então obteremos uma linha horizontal para a direita. Vamos ao cálculo: int x2 = (int)(x1 + Math.cos(ang / 180.0 * Math.PI) * comp); Já sabemos que o valor de x2 é igual a 0 pois (pode testar na barra de endereços de seu browser): javascript:alert(0 / 180.0 * Math.PI) resulta em 0 e: javascript:alert(Math.cos(0)) resulta em 1. Assim: x1 + (1 * 100) = 130. Para que nosso código esteja correto, o valor de y2 deverá ser igual a y1. Vejamos: int y2 = (int)(y1 - Math.sin(ang / 180.0 * Math.PI) * comp); Já sabemos que (ang / 180.0 * Math.PI) resulta em 0 e que o seno de 0 é 0. Assim: y1 - (0 * 100) = 50. Veja o código completo:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Estudos extends JFrame{
JLabel label;
public Estudos() {
super("Desenhando em um JLabel");
Container c = getContentPane();
c.setLayout(new BorderLayout());
// Cria um JLabel
label = new JLabel();
c.add(label, BorderLayout.CENTER);
// Cria um botão
JButton btn = new
JButton("Desenhar uma linha (ângulo)");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
// Desenha uma string no JLabel
int x1 = 30; // coordenada inicial x
int y1 = 50; // coordenada inicial y
int ang = 0; // ângulo
int comp = 100; // comprimento
// coordenada x final
int x2 = (int)(x1 +
Math.cos(ang / 180.0 * Math.PI) * comp);
// coordenada y final
int y2 = (int)(y1 -
Math.sin(ang / 180.0 * Math.PI) * comp);
Graphics graphics = label.getGraphics();
graphics.drawLine(x1, y1, x2, y2);
}
}
);
// Adiciona o botão à janela
c.add(btn, BorderLayout.SOUTH);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Experimente agora fornecer ângulos diferentes, por exemplo, 45 (uma linha diagonal para a direita e para cima), 90 (uma linha vertical para cima), 135 (uma linha diagonal para a esquerda e para cima), 180 (uma linha horizontal para a esquerda), 225 (uma linha diagonal para a esquerda e para baixo), 270 (uma linha vertical para baixo), 315 (uma linha diagonal para a direita e para baixo) e 360 (uma linha horizontal para a direita). Há algo de interessante neste código. Se você maximizar, minimizar ou redimensionar a janela verá que o desenho é apagado. Isso acontece porque todas as vezes que a janela sofre alguma alteração, ela é pintada novamente, juntamente com seus componentes filhos. Se você deseja que o desenho seja feito automaticamente novamente, é melhor fazer uma sub-classe do componente desejado e sobrescrever seu método paintComponent(). Nesta mesma seção você encontrará exemplos de como fazer isso. |
MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial |
Como criar chaves primárias compostas em uma tabela do MySQLQuantidade de visualizações: 2070 vezes |
|
Sabemos que o uso do atributo PRIMARY KEY (PK) permite marcar um campo de uma tabela MySQL como chave primária. Assim, este campo não poderá ter valores repetidos nem conter o valor NULL. Há, no entanto, situações nas quais precisamos marcar mais de um campo como chave primária, ou seja, a chave primária é composta de dois ou mais campos. Estas situações surgem nos cenários em que temos relacionamentos N x N (muitos para muitos) e uma tabela associativa que represente o relacionamento. Um exemplo disso é a relação autor-livro: um autor pode escrever vários livros e um livro pode ser escrito por mais um autor (vários autores em conjunto). Mas, o mesmo autor não pode aparecer no mesmo livro mais de uma vez. Vamos representar isso passo-a-passo. Comece criando a tabela autores. Veja o comando CREATE TABLE completo para esta tarefa: CREATE TABLE autores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, email VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id int(10) unsigned NO PRI - auto_increment nome varchar(45) NO - email varchar(45) NO - Vamos agora criar a tabela livros. Veja o comando CREATE TABLE completo: CREATE TABLE livros( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, titulo VARCHAR(45) NOT NULL, paginas INTEGER UNSIGNED NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB; Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id int(10) unsigned NO PRI - auto_increment titulo varchar(45) NO - paginas int(10) unsigned NO - CREATE TABLE autores_livros( id_autor int(10) unsigned NOT NULL, id_livro int(10) unsigned NOT NULL, PRIMARY KEY(id_autor,id_livro), KEY FK_autores_livros_2(id_livro), CONSTRAINT FK_autores_livros_2 FOREIGN KEY(id_livro) REFERENCES livros(id), CONSTRAINT FK_autores_livros_1 FOREIGN KEY(id_autor) REFERENCES autores(id) ) ENGINE=InnoDB Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id_autor int(10) unsigned NO PRI - - id_livro int(10) unsigned NO PRI - - Agora experimente inserir dados nas tabelas autores e livros. Em seguida faça o relaciomento na tabela autores_livros. Tente repetir o id do autor para o mesmo livro. Imediatamente o MySQL recusará a inserção com a mensagem de erro: Error 1062: Duplicate entry '2-2' for key 1 E, como usamos chaves estrangeiras na tabela autores_livros, ao tentarmos excluir um livro já relacionado com um autor, teremos a seguinte mensagem de erro: Cannot delete or update a parent row: a foreign key constraint fails (`estudos/autores_livros`, CONSTRAINT `FK_autores_livros_2` FOREIGN KEY (`id_livro`) REFERENCES `livros` (`id`)) Veja mais dicas nesta seção para aprender mais sobre chaves estrangeiras e restrições de integridade referencial. |
Nossas 20 dicas & truques de programação mais populares |
|
PHP - Manipulação de texto em PHP - Como acessar e modificar os caracteres individuais de uma string Python - Como gerar números aleatórios em Python usando o método random.randint() da biblioteca NumPy |
Você também poderá gostar das dicas e truques de programação abaixo |
|
wxWidgets - Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgets LISP - Como converter Coordenadas Polares para Coordenadas Cartesianas em LISP - LISP para Engenharia |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






