Galera, poderiam me dizer como comparar através de um método do pacote [quote]java.lang[/quote] as 2 últimas letras de 2 Strings??? Já encontrei o método equalsIgnoreCase, utilizeo também o método chatAt, mas daí eu só localizo a última letra, não sei como localizar as 2 últimas para comparar. Obrigado desde já!!!
Você pode pegar o tamanho da String e utilizar o método charAt para pegar os caracteres na duas últimas posições.
Aliado ao chartAt e o tamanho, você pode usar o substring, que passando a posição da penultima letra, ele retorna o String com as 2 ultimas letras.
String s = "string";
System.out.println(s.charAt(s.length() - 2) + ""
+ s.charAt(s.length() - 1));
System.out.println(s.substring(s.length() - 2));
Dependendo qual for o seu problema, da uma olhada se o método endsWith da classe String não pode te ajudar
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#endsWith(java.lang.String)
Com o substring tu consegue fazer isso…
String suaString = strAntiga.substring(strAntiga.length()-2);
PS: agora eu n lembro c é -2 ou -3, mas é um desses kras ai. ok ?
Galera, agradeço a ajuda, mas estou iniciando agora e estudando por conta, então ainda estou com certas dificuldades. Digitei o seguinte código:
public class String {
public static void main (String args[]) {
String str1 = "Hello";
char x = str1.charAt(0);
String str2 = "hello";
boolean result = str1.equalsIgnoreCase(str2);
}
}
E o sistema me retornou erros…Entre eles, o sistema informa não conhecer os métodos charAt e equalsIgnoreCase. Será que é porque utilizo java versão 1.4.2 ???
Esses métodos existem nessa versão… o problema é que vc declarou a classe com o nome String, então a String que ele esta considerando no seu programa é a sua classe e não a classe do J2SE, e como sua classe não tem esses métodos, da erro… mude o nome da sua classe que o treco compila.
Ou então implemente assim:
java.lang.String str1 = "Hello";
char x = str1.charAt(0);
java.lang.String str2 = "hello";
boolean result = str1.equalsIgnoreCase(str2);
Beleza cara, deu certo!!! Muito obrigado pela ajuda… Abraços
Galera, surgiu uma dúvida…
Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase
Obrigado!!
Galera, surgiu uma dúvida…
Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase
Obrigado!!
[quote=“thundercas”]Galera, surgiu uma dúvida…
Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase
Obrigado!![/quote]
String str1 = "Hello";
char x = str1.charAt(0);
String str2 = "hello";
boolean result = str1.equalsIgnoreCase(str2);
Esse seu código faz:
- cria uma string com “Hello” referenciado pela variavel str1
- grava na variavel char x o primeiro caracter da string str1 (ou seja ‘H’)
- cria uma string com “hello” referenciado pela variavel str2
- compara str1 com str2 utilizando equalsIgnoreCase, ou seja, verifica se a str1 é igual a str2 sem considerar maiusculas e minusculas.
o char x vc nem usa, nesse código ai é dispensavel…
Para resolver la o seu problema inicial:
Obtendo as duas ultimas letras com charAt:
String str1 = "Hello";
String str2 = "hello";
String ultimas2Str1 = "" + str1.charAt(str1.length() - 2)
+ str1.charAt(str1.length() - 1);
String ultimas2Str2 = "" + str1.charAt(str2.length() - 2)
+ str1.charAt(str2.length() - 1);
boolean iguais = ultimas2Str1.equalsIgnoreCase(ultimas2Str2);
System.out.println("As duas ultimas letras de " + str1 + " ("
+ ultimas2Str1 + ") comparado com as duas ultimas letras de "
+ str2 + " (" + ultimas2Str2 + ") são iguais? - " + iguais);
Obtendo as duas ultimas letras com substring:
String str1 = "Hello";
String str2 = "hello";
String ultimas2Str1 = str1.substring(str1.length() - 2);
String ultimas2Str2 = str1.substring(str2.length() - 2);
boolean iguais = ultimas2Str1.equalsIgnoreCase(ultimas2Str2);
System.out.println("As duas ultimas letras de " + str1 + " ("
+ ultimas2Str1 + ") comparado com as duas ultimas letras de "
+ str2 + " (" + ultimas2Str2 + ") são iguais? - " + iguais);
bele?!
Ahh… beleza cara. Agora sim eu entendi. Eu copiei esse código de uma apostila, e realmente não entendi pra que era guardado o valor dentro de uma char.
Beleza pura, muito obrigado pela ajuda!!! Abraços para todos
Só uma dúvida… Por que na linha
s3 = "" + s1.charAt(s1.length() - 2) + s1.charAt(s1.length() - 2);
Se eu não colocar “” no início ocorre erro de tipos incompatíveis???
Obrigado novamente
é porque a soma de dois caracteres character da um int. É colocado “” na frente para forçar ele somar o valor String. Ele começa somando uma string vazia ao caracter, que entao resulta em outra string e depois essa outra string é somada ao outro caracter resultando em outra string.
basicamente:
char + char = int
String + char = String
testa isso:
String x = "brasil";
System.out.println(x.charAt(0) + x.charAt(1));
System.out.println("" + x.charAt(0) + x.charAt(1));
System.out.println(x.charAt(0) + x.charAt(1) + "");
Perceba que no primeiro e terceiro System.out.println a saida é 212. O primeiro ocorreu aquela soma: char + char = int, logo imprimiu um valor inteiro. O segundo eu primeiro criei a string “”, depois somei a ela um char que resultou em outra string e depois somei essa outra string a outro char, resultando em uma string. O terceiro primeiro (que é parecido com o segundo mas a posição do “” é diferente) somei os chars (que resulta em int) e depois esse int somei a string, logo imprimiu um valor String do valor inteiro da soma dos chars.
É só entender como funciona os operadores e a ordem como são executados.
bele!?
Entendi… esse conceito eu realmente não tinha… Valeu cara, muito obrigado pela ajuda.