Matcher converter em int

8 respostas
G

Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher("java.awt.Color[r=255,g=0,b=0]"); while (m.find()){ System.out.println(m.group()); }

Como é que posso passar cada valor para um int?

8 Respostas

T

Pegue o valor de m.group() e converta usando Integer.parseInt(). Não há nenhuma mágica nisso.

G

mas assim da-me só um int eu queria 3

M

Como assim “só te dá um int”? Como ficou seu código? Se quiser 3 ints precisará de 3 variáveis (ou um array delas).

G

Está-me a dar tudo 0, esta a dar o ultimo valor ao 3, o que está mal?

Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher("java.awt.Color[r=255,g=0,b=0]");
int[] ex = new int[3];
while (m.find()){
for(int i = 0; i < ex.length; i++){
ex[i] = Integer.parseInt(m.group());
}
}
System.out.println("1 - " + ex[0] + "\n2 -" + ex[1] + "\n3 - " + ex[2]);
T

Ah, é que o valor de "group()" só muda se você executar o "find". No seu caso, você teria de fazer algo parecido com o seguinte:

Pattern p = Pattern.compile("\\d+");  
 Matcher m = p.matcher("java.awt.Color[r=255,g=0,b=0]");  
 int[] ex = new int[3];
 int i = 0;
 while (m.find()){         
     ex[i] = Integer.parseInt (m.group());
     i = i + 1;
     if (i &gt;= 3) break;
 }
T

Acho que você está a tentar converter um java.awt.Color em um int[3] de maneira muito complicada e lenta. Não é necessário passar o Color para String, e depois usar expressões regulares para passar a String para int[3]. Isso é como você ir de Lisboa para Sintra, mas passando pela cidade do Porto.

http://java.sun.com/javase/6/docs/api/java/awt/Color.html

O correto seria fazer o seguinte:

int ex = new int[3];
Color color = ......; 
ex[0] = color.getRed();
ex[1] = color.getGreen();
ex[2] = color.getBlue();

Leia sempre a documentação. Ela vai evitar que você crie soluções complicadas para problemas simples.

G

Muito obrigado era isso mesmo

G

Gostei da alanogia visto que vc é do Brasil :stuck_out_tongue:

eu estou a ir buscar o java.awt.Color[r=255,g=0,b=0] a um file

Criado 14 de janeiro de 2010
Ultima resposta 14 de jan. de 2010
Respostas 8
Participantes 3