Algebra
Dezembro 7, 2010, 3:10pm
#1
Tenho um código que é assim
if((codeList.get(i).equals("v5"))||
(codeList.get(i).equals("v6"))||
(codeList.get(i).equals("v7")))
//faca algo;
não quero deixar este volume gigantesco de código
tentei isso mas não consegui
if(codeList.get(i).equals("v[5-7]"))
e o pior é que tenho que por de v5 à v72
kkk - alguem pode me auxiliar neste código
Algebra
Dezembro 7, 2010, 3:21pm
#2
com ajuda do código do vini, encontrei solução
final String regex = "(v[5-72])";
final Pattern pattern = Pattern.compile(regex);
final String targetString = oldCode;
final Matcher matcher = pattern.matcher(targetString);
if (matcher.find()) {
//faça algo
}
Olá,
Tenta assim:
if(codeList.get(i).matches("v[0-9]{1,2}"))
Assim você vai pegar a string começando com v e tendo combinações númericas contendo, no mínimo, um algarismo e, no máximo, dois.
Espero que ajude.
[]
Éberson
Isto é legal mas é lento:
if (codeList.get(i).matches ("v[5-7]"))
Isto é ligeiramente mais rápido:
Pattern pat = Pattern.compile ("v[5-7]");
...
if (pat.matcher(codeList.get(i)).matches())
...
Isto é um pouco ligeiramente mais rápido:
Pattern pat = Pattern.compile ("v[5-7]");
Matcher mat = pat.matcher ("");
...
if (mat.reset(codeList.get(i)).matches())
...
E isto (no seu caso em particular) é mais rápido:
String code = codeList.get(i);
if(code.equals("v5"))||
(code.equals("v6"))||
(code.equals("v7")))
Algebra
Dezembro 7, 2010, 3:26pm
#5
valeu pelas dicas rapazes, muito boas
Ah, não tinha visto que você queria do valor 5 ao valor 72. (Li o valor 7). Por exemplo, o código que você postou (“v[5-72]”) não funciona para o valor “v8”.
O correto é:
Pattern pat = Pattern.compile "v([0-9]+)";
String targetString = codeList.get (i);
Matcher mat = pat.matcher (targetString);
if (mat.matches()) {
int num = Integer.parseInt (mat.group (1));
if (5 <= num && num <= 72) return true;
}
return false;
Muito legal mesmo. Indo direto para o caderno de anotações…
abraço,
AS
Algebra
Dezembro 7, 2010, 4:20pm
#8
é vdd entanglement percebi aqui obrigado