Bug do metodo split() da classse String

6 respostas
MarceloNeo

Alguém pode me ajudar a resolver esse problema!

Estava em JSF e precisei usar o metod split da class String,
mas esta dando um erro muito estrando, podem criar um metodo, main ai testar o que estou falando....

Segue o código
try
		{
			System.out.println("(");
			String str = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
			String spl1[] = str.split("(");
			System.out.println(spl1.length);

		}
		catch (Exception e)
		{
			log.setLevel(Level.TRACE);
			log.error(e.getMessage( ), e);
		}
Abaixo o erro gerado...
java.util.regex.PatternSyntaxException: Unclosed group near index 1
(
 ^
	at java.util.regex.Pattern.error(Pattern.java:1713)
	at java.util.regex.Pattern.accept(Pattern.java:1571)
	at java.util.regex.Pattern.group0(Pattern.java:2533)
	at java.util.regex.Pattern.sequence(Pattern.java:1806)
	at java.util.regex.Pattern.expr(Pattern.java:1752)
	at java.util.regex.Pattern.compile(Pattern.java:1460)
	at java.util.regex.Pattern.<init>(Pattern.java:1133)
	at java.util.regex.Pattern.compile(Pattern.java:823)
	at java.lang.String.split(String.java:2292)
	at java.lang.String.split(String.java:2334)
	at com.GerarCentroCustos.main(GerarCentroCustos.java:32)
Fiz isto em também em java 1.6 e deu o mesmo erro.. se alguém já passou por isso! nos ajude...

6 Respostas

M

Você deve passar uma expressão regular.

Tente :

String spl1[] = str.split("[(]");

dsystem

MarceloNeo,

O método split recebe uma expressão regular como parâmetro.

Tente dessa forma

str.split("\\(");

Qualquer coisa, dê uma pesquisada sobre expressões regulares.

Espero ter ajudado!!!

jaboot

usa o StringUtils da apache…

caio.ribeiro.pereira

Tem que usar padrão Regex para validar strings de entrada, veja abaixo bons links de referência sobre Regex:

Meu blog tem uma introdução sobre Regex: http://www.udgwebdev.com/introducao-a-expressao-regular/
Expressões Regulares com Aurelio M. Jargas: http://aurelio.net/regex/guia/

Espero ter ajudado!!

MarceloNeo

Obrigado a todos, pelas participações, estou lendo os materiais,
E lá pelas 19:00 horas vou fazer os testes…

amanhã posto os resultados…

MarceloNeo

magostta:

String[] java.lang.String.split(String regex)

Parameters:
regex the delimiting regular expression

Você deve passar uma expressão regular.

Tente :

String spl1[] = str.split("[(]");

String spl1[] = str.split("[(]");
Isso resolveu obrigado a todos!

Criado 27 de fevereiro de 2012
Ultima resposta 28 de fev. de 2012
Respostas 6
Participantes 5