Neste tutorial de nossa seção de Strings em Python, vamos aprender a transformar uma string maiúscula em minúscula e vice-versa. Também aprenderemos como detectar se um caractere é maiúsculo ou minúsculo.
Leia também:
- Obter certificado do curso (para trabalhar como programador Python)
- Obter apostila Python Progressivo (download do PDF)
Transformar string em maiúscula ou minúscula: upper() e lower()
O método upper() recebe o valor de uma string e retorna ela mesma, mas com todos os caracteres em maiúscula.
Esse método faz parte dos objetos do tipo string.
Então para transformar uma string texto em maiúscula, fazemos: texto.upper()
Veja um exemplo:
texto = "Curso Python Progressivo" print(texto) texto = texto.upper() print(texto)
Resultado:
O mesmo vale para transformar todos os caracteres da string em minúsculos, usando o método lower():
texto = "Curso Python Progressivo" print(texto) texto = texto.lower() print(texto)
Teste e veja o resultado.
String toda em maiúscula ou minúscula: isupper() e islower()
Para detectar se uma string é toda maiúscula ou toda minúscula, usamos o método isupper() que retorna True se todos caracteres forem maiúsculos, e False se não forem.
Vamos testar se a string 'CURSO PYTHON PROGRESSIVO' é toda maiúscula:
Experimente colocar apenas uma letrinha em minúscula, e vai cair no ELSE.
Para saber se toda a string é minúscula, use o método islower(), que é semelhante.
Exercício de String em Python
Crie um script que peça uma string ao usuário e diga se:
Ela é toda maiúscula
Ela é toda minúscula
Tem caracteres maiúsculos e minúsculos
No primeiro teste condicional, verificamos se tudo é maiúsculo.
Se for, ok, avisa isso.
Se não for, cai no ELIF que vai testar se é tudo minúsculo.
Se for, avisa que é.
E por fim, se não for tudo maiúsculo ou tudo minúsculo, é porque ta misturado:
while True: texto = input("Digite uma string: ") if texto.isupper(): print("Tudo maiusculo") elif texto.islower(): print("Tudo minusculo") else: print("Misturado")
Artigos Java String em Java: Entendendo e utilizando essa classe
Por que eu devo ler este artigo:A classe String � utilizada por toda a API do Java e por diversas vezes precisaremos dela em nossos c�digos. Isso faz com que o dom�nio dessa classe seja fundamental para todo aquele que deseja se tornar um programador Java. Aqui neste artigo falaremos sobre as principais caracter�sticas dessa classe com exemplos de c�digo e coment�rios.
Uma String armazena uma sequ�ncia de caracteres. Apesar de ser f�cil de utilizar, essa classe possui diversas caracter�sticas que podem n�o ser �bvias para quem est� tendo o seu primeiro contato com ela.
Por exemplo, um objeto String � imut�vel, o que significa que o texto que ele carrega nunca � alterado. Sempre que um texto precisa ser modificado � utilizado mais espa�o em mem�ria para que uma nova String seja criada contendo a nova vers�o dele. Essas caracter�sticas ser�o o assunto que abordaremos primeiro.
Como criar uma String
Para o compilador, qualquer texto entre aspas duplas � uma String. Por esse motivo a cria��o de um objeto desse tipo n�o requer a utiliza��o do operador new. Assim, uma String � criada de forma semelhante a um tipo primitivo, utilizando-se a sintaxe [tipo] [nome] = [valor], apesar de se tratar de um tipo por refer�ncia - um nome para um objeto em mem�ria.
O C�digo 1 apresenta a forma correta de se criar uma inst�ncia da classe String.
String texto = "Qualquer texto entre aspas � uma String";
C�digo 1. Cria��o de uma inst�ncia da classe String
Tamb�m n�o utilizamos o operador new porque ao faz�-lo for�amos a cria��o de uma nova String, anulando um recurso de otimiza��o da linguagem que evita que o mesmo texto exista mais de uma vez na mem�ria.
Por exemplo, no C�digo 2 criamos uma String utilizando o operador new, o que faz com que mais recursos sejam utilizados do que o necess�rio.
String texto = new String("Qualquer texto entre aspas � uma String");
C�digo 2. Declara��o de uma string utilizando o operador new
Toda a vez que o c�digo acima for executado uma nova String ser� criada contendo o texto "Qualquer texto entre aspas � uma String". Caso o C�digo 2 esteja dentro de um loop for repetido por mil vezes, mil objetos ser�o criados. Contudo, se o C�digo 1 estiver dentro de um loop for repetido por mil vezes, apenas um objeto ser� criado na primeira repeti��o e reutilizado em todas as demais. Lembre-se, para o Java qualquer texto entre aspas duplas � uma inst�ncia da classe String. A prova disso � que podemos escrever um texto entre aspas e invocar a partir dele um m�todo qualquer da classe String, como demonstra o C�digo 3.
"Qualquer texto entre aspas � uma String".length();
C�digo 3. Invocando um m�todo qualquer da classe String
Note acima que o texto n�o foi atribu�do a nenhuma vari�vel, mas ainda assim � um objeto plenamente funcional para o compilador, a partir do qual podemos invocar quaisquer m�todos da classe String.
O valor especial null
� poss�vel declarar uma vari�vel como sendo do tipo String sem inicializ�-la com um valor, como mostra o C�digo 4.
C�digo 4. Declara��o de uma string sem inicializa��o
Nesse caso, se a vari�vel texto for declarada dentro de uma classe, como membro, o valor padr�o null ser� atribu�do a ela, como vemos no C�digo 5.
class Pessoa { String nome; } class PessoaTeste { public static void main(String[] args) { Pessoa p = new Pessoa(); System.out.println(p.nome); } }
C�digo 5. String iniciada com o valor padr�o null
Quando a inst�ncia da classe Pessoa � criada na Linha 8, o valor padr�o null � atribu�do a vari�vel nome e por esse motivo o m�todo println exibir� o texto null no console, ao ser invocado na Linha 9.
Caso a vari�vel seja declarada dentro de um m�todo, como vari�vel local, um erro de compila��o acontecer� se desejarmos utiliz�-la, porque nenhuma vari�vel local pode ser utilizada sem ter sido iniciada. Isso tamb�m vale para par�metros de m�todos. O C�digo 6 demonstra esse comportamento.
class PessoaTeste { public static void main(String[] args) { String nome; System.out.println(nome); } }
C�digo 6. Erro ao utilizar uma vari�vel local sem inici�-la
Quando a vari�vel nome for utilizada na Linha 5 ocorrer� um erro de compila��o informando que a vari�vel nome foi apenas declarada, mas n�o foi iniciada com nenhum valor.
Testando igualdade entre Strings
A compara��o entre Strings utilizando o operador de igualdade (==) retornar� true se as duas refer�ncias apontarem para o mesmo objeto na mem�ria.
Por exemplo, no C�digo 7 o texto "Nome e apelido s�o iguais" ser� impresso apenas porque nome e apelido apontam para o mesmo objeto criado quando o compilador encontra o texto "Arthur".
String nome = "Arthur"; String apelido = nome; if(nome == apelido) { System.out.println("Nome e apelido s�o iguais"); }
C�digo 7. Exemplo de atribui��o de refer�ncias
O mesmo acontece no C�digo 8, no qual temos duas vezes a ocorr�ncia do literal "Arthur", os quais a JVM tratar� como sendo o mesmo objeto. Uma vez que nome e apelido apontam para o mesmo objeto, a express�o l�gica nome == apelido ser� avaliada como true.
String nome = "Arthur"; String apelido = "Arthur"; if (nome == apelido) { System.out.println("Nome e apelido s�o iguais"); }
C�digo 8. Exemplo de atribui��o de refer�ncias
Contudo, no caso abaixo o texto "Nome e apelido s�o iguais" n�o ser� impresso, visto que nome e apelido apontam para objetos diferentes, sendo o primeiro criado com o comando new String("Arthur") e o segundo com o literal "Arthur". Lembre-se, o operador new for�a a cria��o de um novo objeto.
String nome = new String("Arthur"); String apelido = "Arthur"; if (nome == apelido) { System.out.println("Nome e apelido s�o iguais"); }
C�digo 9. Exemplo de atribui��o de refer�ncias
Nesse caso, se invert�ssemos as linhas 1 e 2 o efeito seria o mesmo, porque new sempre for�a a cria��o de um novo objeto.
Na maior parte das vezes em que estivermos comparando dois textos estaremos interessados em saber se seus caracteres s�o iguais e n�o se est�o armazenados no mesmo espa�o em mem�ria. Nesse caso devemos utilizar algum m�todo de compara��o da classe String e ela possui v�rios. O primeiro que veremos aqui se chama equals.
Equals
Equals � um m�todo da classe Object utilizado para testar a rela��o de igualdade entre dois objetos. Esse m�todo est� presente em todas as classes, porque todas elas derivam de Object. A forma como essa compara��o ser� feita pode ser determinada por quem est� escrevendo a classe e no caso de String, seu autor preparou o m�todo equals (C�digo 10) para verificar se duas Strings cont�m exatamente os mesmos caracteres.
String nome1 = "Carlos"; String nome2 = "Carla"; if (nome1.equals(nome2)) { System.out.println("Os nomes s�o iguais!"); } else { System.out.println("Os nomes s�o diferentes!"); }
C�digo 10. Exemplo de compara��o com m�todo equals
Nesse caso a mensagem "Os nomes s�o diferentes!" ser� impressa, uma vez que nome1 cont�m uma sequencia de caracteres diferente de nome2.
equalsIgnoreCase
Esse m�todo ignora a distin��o entre letras mai�sculas e min�sculas nas duas strings comparadas.
String nome1 = "Carlos"; String nome2 = "carlos"; if(nome1.equalsIgnoreCase(nome2)) { System.out.println("Os nomes s�o iguais!"); }
C�digo 12. Exemplo do m�todo equalsIgnoreCase
Nesse novo exemplo os nomes s�o iguais, ent�o o m�todo equalsIgnoreCase retornar� true.
compareTo
Esse m�todo pode retornar 0 se as strings forem iguais, um n�mero negativo se a string que invoca o compareTo for menor que a string que � passada como um argumento e um n�mero positivo se a string que invoca o compareTo for maior que a string que � passada como argumento.
String nome1 = "Carlos"; String nome2 = "Carla"; System.out.println("nome2.compareTo(nome1) = "+nome2.compareTo(nome1)); System.out.println("nome1.compareTo(nome2) = "+nome1.compareTo(nome2));
C�digo 11. Exemplo do m�todo compareTo
Neste caso, compareTo vai nos dar um n�mero negativo no primeiro caso, porque Carla � menor que Carlos, e um n�mero positivo no segundo caso porque Carlos � maior que Carla.
compareToIgnoreCase
� uma fun��o que compara textos lexigraficamente, ignorando se as letras s�o mai�sculas ou min�sculas. No exemplo abaixo fazemos duas compara��es, uma utilizando compareTo e a outra usando compareToIgnoreCase para analisarmos as diferen�as.
String texto = "A API de Strings � uma das mais utilizadas na linguagem Java"; String linguagem = texto.substring(texto.indexOf("Java"), texto.length()); if (linguagem.compareToIgnoreCase("java") == 0) { System.out.println("compareToIgnoreCase: Encontrei a linguagem! Ela � " + linguagem); } if(linguagem.compareTo("java") == 0) { System.out.println("compareTo: Encontrei a linguagem! Ela � " + linguagem); }
C�digo 12. Exemplo do m�todo equalsIgnoreCase
Ap�s a execu��o desse c�digo apenas a mensagem "compareToIgnoreCase: Encontrei a linguagem! Ela � Java" ser� impressa, uma vez que para compareTo os textos "JAVA" e "java" s�o diferentes.
Principais m�todos da classe String
A partir daqui listaremos os principais m�todos da classe String com exemplos comentados. Existem muitos m�todos nesta classe e aqui falaremos sobre os mais utilizados. Para uma lista completa deles recomendo a documenta��o da classe String no site oficial da documenta��o do Java.
Documenta��o oficial da classe String: Class String
concat
Existem duas formas de unir duas ou mais sequ�ncias de caracteres. A mais comum dentre elas � utilizando o operador de adi��o, como demonstra o C�digo 13.
String nomeCompleto = nome + sobrenome;
C�digo 13. Exemplo concatena��o de Strings
Uma outra forma de fazer isso � utilizando o m�todo concat. Isso � menos comum, mas ainda � poss�vel. O C�digo 14 ficaria dessa forma utilizando esse m�todo:
String nomeCompleto = nome.concat(sobrenome);
C�digo 14. Exemplo de concatena��o de Strings
Note que se o valor de nome for Carlos e sobrenome for Henrique, o resultado do c�digo acima ser� CarlosHenrique, porque n�o h� espa�o entre os dois textos.
String.valueOf
valueOf � um m�todo est�tico da classe String, que n�o precisa de uma inst�ncia para ser invocado. Ele converte um tipo primitivo em um objeto do tipo String. O C�digo 15 demonstra como utilizar esse m�todo.
public class Testa_Metodo_valueOf { public static void main(String[] args) { double numero = 102939939.939; boolean booleano = true; System.out.println("Retorna Valor : " + String.valueOf(numero)); System.out.println("Retorna Valor: " + String.valueOf(booleano));
C�digo 15. Exemplo do m�todo valueOf
Length
Retorna o comprimento do texto em uma String. No C�digo 16 � impresso o comprimento do texto.
String nomeCurso = "Java"; System.out.printf("\nTamanho da vari�vel nomeCurso: %d", nomeCurso.length());
C�digo 16. Exemplo do m�todo length
charAt
Retorna o caractere em uma localiza��o espec�fica em uma String. Esse m�todo possui um par�metro do tipo inteiro que � usado como �ndice, retornando a partir dessa posi��o inserida nesse par�metro. � importante lembrar que o �ndice sempre come�a a ser contado do n�mero 0 (zero) em diante. Sendo assim a posi��o do caractere a em Carlos � 1 e n�o 2, como se poderia deduzir.
Nesse novo exemplo, no C�digo 17, a mensagem "O caractere A est� na posi��o 1" ser� impressa, uma vez que o caractere A est� na posi��o 1 da cadeia de caracteres.
String nomeCurso = "JAVA"; if(nomeCurso.charAt(1) == �A�) { System.out.println(�O caractere A est� na posi��o 1�); }
C�digo 17. Exemplo do m�todo charAt
getChars
Recupera um conjunto de caracteres de uma String. Esse m�todo possui os seguintes par�metros de entrada:
- srcBegin � �ndice do primeiro caractere da string a ser copiada.
- srcEnd - �ndice depois da �ltima string a ser copiada.
- dst � O destino do array.
- dstBegin � o in�cio do deslocamento no array de destino.
String nomeCurso = "Curso Java Web"; //� A DIFEREN�A DO 1� E 2� PAR�METRO DO M�TODO getChars //SE DIMINUIR OS 2 O RESULTADO TEM QUE SER O MESMO INICIADO NO ARRAY char[] numIndice = new char[7]; nomeCurso.getChars(2, 9, numIndice, 0); System.out.print("Valores Copiados \n"); for(char caracter : numIndice) { System.out.print("["+caracter+"]"); } System.out.println("\n\n Abaixo �ndice demonstrativo dos valores copiados\n"); int[] b = {0,1,2,3,4,5,6}; for(int i = 0; i < b.length; i++) { System.out.print("["+b[i]+"]"); }
C�digo 18. Exemplo do m�todo getChars
startsWith e endsWith
Os m�todos startsWith e endsWith aceitam uma string e um n�mero inteiro como argumentos, retornando um valor booleano que indica se a string inicia ou termina, respectivamente, com o texto informado a partir da posi��o dada.
String[] nomes = {"iniciado", "iniciando", "finalizado", "finalizando"}; for (String recebeNomes : nomes) { if (recebeNomes.startsWith("in")) System.out.printf("\"%s\" inicia com \"in\" \n", recebeNomes); } System.out.println(); for (String recebeNomes : nomes) { if (recebeNomes.startsWith("ici", 2)) System.out.printf("\"%s\" inicia com \"ici\" na posi��o 2 \n", recebeNomes); } System.out.println(); for (String recebeNomes : nomes) { if (recebeNomes.endsWith("ado")) System.out.printf("\"%s\" termina com \"ado\" \n", recebeNomes); }
C�digo 19. Exemplo dos m�todos startsWith e endsWith
indexOf e lastIndexOf
Permitem a localiza��o de caracteres e substrings especificados em strings.
indexOf
Localiza a primeira ocorr�ncia de um caractere em uma string. Se o m�todo localizar o caractere, � retornado o �ndice do caractere na String, caso contr�rio retorna -1. Existem duas vers�es do indexOf que procuram caracteres em uma String.
- 1� vers�o � aceita um inteiro que � conhecido como o n�mero do �ndice na String.
- 2� vers�o � aceita dois argumentos inteiros � o caractere e o �ndice inicial em que a pesquisa da String deve iniciar.
lastIndexOf
Localiza a �ltima ocorr�ncia de um caractere em uma string. O m�todo procura do fim da string em dire��o ao come�o, se encontrar o caractere � retornado o seu �ndice na string, caso contr�rio retorna -1. Existem duas vers�es do lastIndexOf que pesquisam por caracteres em uma string.
- 1� vers�o � utiliza um inteiro do caractere.
- 2� vers�o � aceita 2 argumentos � um inteiro de caractere e o �ndice a partir do qual iniciar a pesquisa de tr�s para frente.
String letras = "abcadefghijklmcopqrsdeftuvz"; //TESTA indexOf PARA LOCALIZAR UM CARACTERE EM UM STRING System.out.printf("�ltimo 'c' est� localizado no index %d\n", letras.indexOf('c')); System.out.printf("�ltimo 'a' est� localizado no index %d \n", letras.indexOf('a', 1)); //-1 N�O EXISTE System.out.printf("'$' est� localizado no index %d\n\n", letras.indexOf('$')); //TESTA lastIndexOf PARA LOCALIZAR UM CARACTERE EM UMA STRING System.out.printf("�ltimo 'c' est� localizado no index %d\n", letras.lastIndexOf('c')); System.out.printf("�ltimo 'a' est� localizado no index %d\n", letras.lastIndexOf('a', 5)); System.out.printf("�ltimo '$' est� localizado no index %d\n", letras.lastIndexOf('$')); //TESTA indexOf PARA LOCALIZAR UMA SUBSTRING EM UMA STRING System.out.printf("\"def\" est� localizado no index %d\n", letras.indexOf("def")); //2 argumento string e outro o ponto inicial que come�ar� a pesquisa System.out.printf("\"def\" est� localizado no index %d\n", letras.indexOf("def", 7)); System.out.printf("\"hello\" est� localizado no index %d\n\n", letras.indexOf("hello"));
C�digo 20. Exemplo dos m�todos indexOf e lastIndexOf
substring
Permite extrair substrings de strings e fornece 2 m�todos substring para permitir que um novo objeto seja criado copiando parte de um objeto string existente. Cada m�todo retorna um novo objeto desse tipo. Existem duas vers�es desse m�todo que s�o:
- 1� vers�o � recebe um argumento do tipo inteiro, que especifica a partir de que caractere a c�pia deve come�ar. A substring retornada cont�m uma c�pia dos caracteres desde esse �ndice at� o �ltimo caractere na string.
- 2� vers�o - recebe dois argumentos do tipo inteiro. A String retornada ser� composta pelo o primeiro argumento e se estende at� o caractere anterior ao segundo argumento. Portanto, o comprimento da String � "argumento_2 - argumento_1". Em outras palavras, voc� pode dizer que o primeiro argumento � inclusivo e o segundo argumento � exclusivo
String nome = "Jos� Silveira"; System.out.println("String : " + nome); String substring = nome.substring(5); System.out.println("String depois da 3� index: " + "["+substring+"]"); substring = nome.substring(1, 6); System.out.println("Substring (1,6): " + "["+substring+"]");
C�digo 21. Exemplo do m�todo substring
replace
Retorna um novo objeto contendo a string original com um trecho especificado substitu�do por outra express�o indicada. Esse m�todo deixa a string original inalterada. A vers�o sobrecarregada do m�todo replace permite substituir substrings em vez de caracteres individuais.
String nome = "mesquita"; String nomeAlterado = nome.replace('e', 'o'); System.out.println(nomeAlterado);
C�digo 22. Exemplo do m�todo replace
toUpperCase
Retorna uma nova string com o conte�do da original convertido para letras mai�sculas, mantendo a original inalterada.
toLowerCase
De forma semelhante ao anterior, o toLowerCase retorna uma c�pia de uma string com todas as letras convertidas para min�sculo, mantendo a original inalterada.
String nomeA = "joaquina"; String nomeB = "Paulo"; System.out.println(nomeA.toUpperCase()); System.out.println(nomeB.toLowerCase());
C�digo 23. Exemplo dos m�todos toLowerCase e toUpperCase
trim
Gera um novo objeto string, removendo todos os caracteres de espa�o em branco que aparecem no in�cio ou no fim da string em que o m�todo opera. O m�todo retorna um novo objeto string contendo a string sem espa�o em branco inicial ou final. A string original permanece inalterada.
toCharArray
Cria um novo array de caracteres que cont�m uma c�pia dos caracteres da vari�vel apontada.
String s1 = "ol�"; String s2 = "TCHAU"; String s3 = " espa�os "; System.out.println("s1 = "+ s1 + "\n" + "s2 = "+ s2 + "\n" + "s3 = "+s3); //M�TODO REPLACE System.out.printf("Replace 'l' por 'L' no s1: %s\n\n", s1.replace('l', 'L')); //M�TODO UPPER E LOWERCASE System.out.printf("s1.toUpperCase() = %s\n", s1.toUpperCase()); System.out.printf("s2.toUpperCase() = %s\n\n", s2.toLowerCase()); //M�TODO TRIM - REMOVE OS ESPA�OS System.out.printf("s3 depois do trim = \"%s\"\n\n", s3.trim()); //CONVERTEU O ol� PARA CHAR char[] charArray = s1.toCharArray(); System.out.printf("s1 como um caracter array = "); for(char caracter : charArray) { System.out.print(caracter); }
C�digo 24. Exemplo dos m�todos trim e toCharArray
- Java
Confira outros conte�dos:
Por Devmedia Em 2019