Fazer Split de um texto

5 respostas
J

Bom dia, eu tenho um texto e gostaria de fazer um split numa variável, qual é a melhor forma? Segue abaixo o texto para uma análise.

“4520-0/01 - Serviços de manutenção e reparação mecânica de veículos automotores 4520-0/07 - Serviços de instalação, manutenção e reparação de acessórios para veículos automotores 9529-1/05 - Reparação”

Esta string recebo de uma fonte de dados , preciso separar da seguinte forma:

4520-0/01 - Serviços de manutenção e reparação mecânica de veículos automotores,
4520-0/07 - Serviços de instalação, manutenção e reparação de acessórios para veículos, automotores
9529-1/05 - Reparação

Obrigado.

5 Respostas

Lucas_Camara

Use Regex.

J

Eu pesquisei a tarde inteira ontem e fiz vários testes com regex, mas não cheguei a lugar nenhum…

D

Também recomendo utilizar regex. Seria assim:

  1. Defina a expressão irregular para identificar cada item que deve ser separado:
Pattern timestampPattern = Pattern.compile("(\\d+/\\d+/\\d+ \\d+\\:\\d+\\:\\d+[.]\\d+)");
  1. Depois você cria uma loop para obter todos os itens que correspondem a expressão regular:
Matcher timestampMatcher = timestampPattern.matcher(stringCompleta);
while (timestampMatcher.find()) {
	String itemDaString = timestampMatcher.group();
}
M

Boa tarde,

Realizar a quebra de uma String em Java é relativamente simples.
A própria classe String te fornece mecanismos para isso.

Por exemplo:

String s = "4520-0/01 - Serviços de manutenção e reparação mecânica de veículos automotores";
String[] strArray = s.split("-");

O código acima irá resultar em um array de duas posições onde.
strArray[0] é igual a “4520-0/01"
strArray[1] é igual a " Serviços de manutenção e reparação mecânica de veículos”

Outra solução que vc pode adotar é:

StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }

Este imprime a seguinte saida:
this
is
a
test

Maiores informações em https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

Em se tratando de performance, o uso de Split direto é mais eficiente.

Espero ter ajudado.

J

Boa tarde a todos (obrigado pela ajuda)

Consegui criar uma expressão regex para fazer o split:

\d{4}-\d{1}/\d{2}

O problema é que eu queria incluir no início o bloco que vou fazer a separação, ou seja, incluir este início (4520-0/01). Muito obrigado a todos, vou continuar a pesquisa.

Criado 7 de junho de 2016
Ultima resposta 7 de jun. de 2016
Respostas 5
Participantes 4