1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Separar Numero de Caracteres

Discussão em 'Progress 4GL' iniciado por DFResmer, Outubro 21, 2011.

  1. DFResmer

    DFResmer Membro Participativo

    Olá Galera,
    tem como separar os numeros dos caraceres? Por expemplo:

    Inteiro:
    fi-endcli = rua marcos garcia 145

    Depois ficar assim separado:
    fi-endcli = rua marcos garcia
    fi-numcli = 145

    Att,

    Diogo
  2. rhemati

    rhemati Membro Participativo

    Diogo, bom dia.

    Segue abaixo o que precisa:

    Código:
    def var c-texto         as char no-undo.
    def var i-tam-texto     as int no-undo.
    def var i-x             as int no-undo.
    
    def var c-result        as char no-undo.
    def var c-result-i      as char no-undo.
    def var i-result        as int no-undo.
    def var c-result-texto  as char no-undo.
    def var c-result-numero as char no-undo.
    
    assign  c-texto     =   'rua marcos garcia 145'
            i-tam-texto =   length( c-texto )
            .
    
    do i-x = 1 to i-tam-texto:
    
        assign i-result = int( substr( c-texto, i-x, 1 ) ) no-error.
    
        IF ERROR-STATUS:ERROR AND ERROR-STATUS:NUM-MESSAGES > 0 then DO:
    
            assign  c-result        =   string( c-result ) + string( substr( c-texto, i-x, 1 ), 'x(01)' ) 
                    c-result-texto  =   string( c-result )
                    no-error.
    
        END.
        else do:
            assign  c-result-i      =   c-result-i + substr( c-texto, i-x, 1 )
                    c-result-numero =   c-result-i
                    no-error.
        end.
    
    end.
    
        MESSAGE 'c-result-texto'    c-result-texto  skip
                'c-result-numero'   c-result-numero
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    quit.
    
    
    
    A única coisa que estou aqui tratando é que ele não está respeitando pegar os espaços em branco, mas enquanto você pode ir brincando. rs.

    Abraço.
  3. DFResmer

    DFResmer Membro Participativo

    legal, pena que está tirando fora os espaços.
    Vou tentar brincar aqui e ver se consigo alguma coisa.

    Att,

    Diogo
  4. jalegria

    jalegria Membro Participativo

    a logica p/ separar o numero do endereço é um pouco mais complexa

    pode ter endereço com numero no nome da rua ou estrada
    pode ter com S/N ou com um complemento apos o numero

    enfim um monte de coisas q tem q ser consideradas
    mas alterando um pouco esse mesmo codigo tenta assim:

    Código:
    def var c-texto         as char no-undo initial 'rua marcos garcia 145'.
    def var i-x             as int  no-undo.
    def var c-result-texto  as char no-undo.
    def var c-result-numero as char no-undo.
    
    
    &scoped letra substr(c-texto, i-x, 1)
    
    do i-x = 1 to length(c-texto):
    
      if {&letra} >= "0" and {&letra} <= "9"
      then c-result-numero  = c-result-numero  + {&letra}.
      else c-result-texto = c-result-texto + {&letra}.
    
    end.
    
    MESSAGE 'c-result-texto'  c-result-texto skip
            'c-result-numero' c-result-numero
             VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
  5. jdchaves

    jdchaves Membro Participativo

    Estou com o Mesmo problema!

    E acredito que não tenha que separar os numeros de letras, pq existe nomes de rua com numeros!
    Ex: Rua 408, 1992
    Rodovia BR-101, Km 61, 800

    Estou fazendo uma função aqui, e depois eu posto ;)


    @x_jeferson
    facebook/jeferson
    EMAIL REMOVIDO! - Motivo: Recebendo Muito Span.
    skype: jeferson.de.chaves
  6. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    O ideal seria manter um padrão no cadastro se possivel... sempre apos o nome da rua colocar uma virgula e apos o numero um caracter especifico para separar complemento, ai fica facil

    Ex.

    Rua Jose de Souza, 841 - ap 41

Compartilhe esta Página