[RESOLVIDO]Emprego de método Trim()

9 respostas
manolo

Bom dia a todos!!! :D

Pessoal,

estou desenvolvendo um sistema utilizando tecnologia oracle (mais especificamente ADF e Jdeveloper).

Estou com um probleminha na hora de gravar um string no meu banco de dados, ou seja, o usuário informa um nome em um campo e o mesmo não podera gravar com espaços, (tanto no começo, quanto no fim da string).

A solução de certa forma é simples. Utilização do método trim(). Mas infelizmente não está funcionando como deveria!

Abaixo segue parte de meu método com comentários sobre um alteração que eu fiz.

private boolean confirmCreateCategoryActionsGeneric(String acao) {
        DCBindingContainer bindingContainer =
            (DCBindingContainer)getBindings();
        DCIteratorBinding iteratorCategory =
            bindingContainer.findIteratorBinding("CategoryView1Iterator");

        Row currentRow = iteratorCategory.getCurrentRow();
        String nameSource = "";
        if (currentRow.getAttribute("Name") != null) {

            //Abaixo segue minha logica para o tratamento da String.
            currentRow.setAttribute("Name", currentRow.getAttribute("Name").toString().trim());
            nameSource = currentRow.getAttribute("Name").toString();
            nameSource = prepareUrlString(nameSource, 0);
            nameSource = nameSource.toLowerCase();
        }

Agradeço desde já a ajuda de todos.

Abraço!

9 Respostas

Rodrigo_Sasaki

e o que acontece de errado ?

E

A coluna do banco de dados foi definida como VARCHAR ou CHAR? Se foi como CHAR, o banco completa com espaços à direita :frowning:

manolo

Respondendo:

digaoneves, quando um usuário preencher o campo nome no formulário e acabar colocando espaços a direita da String, os espaços estão sendo gravados junto com a string informada.

A coluna está como varchar2!!!

Obrigado pela atenção.

Rodrigo_Sasaki

Você chegou a debugar para ver se o trim() realmente não está funcionando?

manolo

Sim Digão! E realmente não dá certo.

adrielcafe

Que estranho :shock:

Fiz esse método agora, tenta com ele:
private String trim(String str){
        int inicioStr = -1;
        int fimStr = -1;
        
        for(int i = 0; i < str.length(); i++){
            if(str.charAt(i) != ' '){
                if(inicioStr == -1)
                    inicioStr = i;
                fimStr = i;
            }
        }
        
        return str.substring(inicioStr, fimStr + 1);
}
manolo

Adriel,

muito obrigado pela resposta. Vou sair para almoçar agora (também sou filho do homem rs.) e voltando vou realizar o teste com este método que você propôs.

Abraço…

Rodrigo_Sasaki

ou

private String trim(String str){ return str.replaceAll("^[\\s]+|[\\s]+$", ""); }

Apesar de eu achar realmente muito estranho o próprio trim() da classe String não funcionar…

manolo

Pessoal, agradeço a ajuda de todos, mas a maneira que eu estava realizando estava de certa forma correto. Não sei o motivo de não estar realizando a operação, mas agora está funfando numa boa.

Obrigado pela atenção e ajuda de todos!!

Criado 23 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 9
Participantes 4