Delimitador de texto

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!