Tratamento de caractere no incio de uma string

3 respostas
manolo

Bom dia pessoal!

Estou com uma duvida meio basica (creio que de manipoulação de String’s).

Tenho o método abaixo, descrevi o resultado esperado :

public String getLevelNameBreadCrumb(Document doc) { Collection<Object> cat = doc.getFieldValues("level_main_name"); StringBuffer dados = new StringBuffer(); if(cat != null && cat.toArray() != null){ Object[] array = cat.toArray(); for (int i = array.length - 1; i <= 2 && i >= 0; i--) { if (i == 2) { //Se forem 3 categorias ele retira o pipe do começo ficando dessa forma: Cat1|Cat2|Cat3 dados.append(array[i]); }else { //Caso retorne apenas duas ou uma categorias fica dessa forma: |Cat1|Cat2. dados.append("|" + array[i]); } } return dados.toString(); } return ""; }

O que preciso realmente fazer é retirar o pipe do inicio |Cat1|Cat2 -> Cat1|Cat2. Fiz apenas quando tenho três categorias, como posso retirar para todas, ou seja quando vem uma categoria ou duas?
Alguem tem alguma ideia de como posso tratar isso?

Obrigado a todos pela atenção.

3 Respostas

cido18

Olá,

Se o pipe sempre estiver no inicio e vc souber o tamanho da String, você pode dar um replace usando o StringBuffer:

replace(int start, int end, String str)

ou algum método da classe:

http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html

flw

Master.Abs

Utilize o método substring() , creio que terá o resultado esperado.

public String getLevelNameBreadCrumb(Document doc) {
        Collection<Object> cat = doc.getFieldValues("level_main_name");  
        StringBuffer dados = new StringBuffer();  
        if(cat != null && cat.toArray() != null){  
            Object[] array = cat.toArray();  
            for (int i = array.length - 1; i <= 2 && i >= 0; i--) {
            	if (i == 2) { //Se forem 3 categorias ele retira o pipe do começo ficando dessa forma: Cat1|Cat2|Cat3
            		dados.append(array[i]);
				}else { //Caso retorne apenas duas ou uma categorias fica dessa forma: |Cat1|Cat2.
					dados.append("|" + array[i]); 
				}                                 
            }    
            return dados.toString().substring(1); 
        }   
        return "";
	}

Valeu.

manolo

Oi pessoal!

Valeu pela as repostas!

cido18, o tamanho das Strings e variável. O replace não funciona nesse caso.

Master.Abs, como se trata sempre do primeiro caractere. Acho que o substring funciona. Vou tentar!

Obrigado pelas respostas

Criado 31 de julho de 2013
Ultima resposta 31 de jul. de 2013
Respostas 3
Participantes 3