Possuo a seguinte lista:
|#+|Item Nature|#+|
1|#+|-|#+|
2|#+|ALUMINIO|#+|
3|#+|ANTI-LIGA|#+|
4|#+|ACO|#+|
5|#+|CARRETEL F|#+|
6|#+|CARRETEL M|#+|
7|#+|CARRETEL MC|#+|
8|#+|COBRE|#+|
9|#+|EMBALAGEM|#+|
10|#+|EPR|#+|
11|#+|EVA|#+|
Preciso obter somente a descrição contida entre o delimitador “|#+|”.
dos itens de 1 até …
Tentei o split, mais a solução não ficou boa, pois cada caractere
ficou em uma posição em um Array to tipo String.
Alguém tem alguma sugestão prática?
Caso o delimitador seja sempre |#+| faça um substring em cada linha…
Exemplo
String line = "|#+|MY NAME IS|#+|";
StringBuilder s = new StringBuilder();
s.append(line.substring(4, line.length() - 4));
Você usou o “split” com parâmetros errados.
É que split aceita como parâmetro uma expressão regular, e tanto “|” quanto “+” são caracteres especiais em expressões regulares.
Uma forma de resolver isso é “neutralizar” a expressão regular, usando Pattern.quote (que transforma a expressão regular em uma constante string).
Outra forma é você neutralizar os caracteres especiais da expressão regular com “\”.
O delimitador deve ser codificado como:
String s = "2|#+|ALUMINIO|#+|";
String[] dados = s.split (Pattern.quote ("|#+|")); // observe o uso de Pattern.quote
Se você for usar o Java 1.4 (onde Pattern.quote não está disponível), você tem de usar:
String s = "2|#+|ALUMINIO|#+|";
String[] dados = s.split ("\|#\+\|")); // o "\" efetua o "escape" do caracter especial "|" e do caracter especial "+".
Pode ser um replace tb…
String novo= velho.replace("|#+|", "");
Acrescentei o indexOf para levar em consideração (eliminar) os números da esquerda que variam de 1 a … do primeiro delimitador.
String line = "1|#+|MY NAME IS|#+|";
StringBuilder s = new StringBuilder();
s.append(line.substring(line.indexOf("|#+|") + 4, line.length() - 4));
Obrigado pela ajuda Galera!