Bom dia,
Alguém me pode ajudar na seguinte questão:
Qual a função para conseguir obter o 1ª palavra e a última, por exemplo num campo do nome completo retirar o 1º e o último?.
Agradeço desde já a ajuda.
Estou aqui a fazer algumas perguntas, e peço desculpa, é que já não programava em clipper já há um bom tempo. Neste momento necessito fazer migrações para ficheiros txt separados por tab e estou a utilizar o cllipper.
Obrigado mais uma vez
Como obter 1º e ultima palavra num campo
Moderador: Moderadores
-
theramones
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 07 Nov 2008 10:26
- Localização: Portugal
Re: Como obter 1º e ultima palavra num campo
Para resolver problema do tipo, pense nas características das palavras. Usando um exemplo prático com um nome popular: "Barack Hussein Obama". Você precisa do primeiro e do último nome. Para obtê-los, note que o primeiro nome é seguido por um espaço e o último é precedido também por um espaço. Você só precisará então encontrar o primeiro espaço do nome completo para obter o primeiro nome:
pos1 := AT(" ", nome)
Analogamento, para obter o último nome, basta encontrar o último espaço. Aí usamos a função RAT(), parente da função AT(), mas que encontra a última ocorrência da string padrão:
pos2 := RAT(" ",nome)
Aí é só manipular esses valores para separar os alvos:
nome1 := LEFT(nome,pos1-1) // "Barack"
nome2 := RIGHT(nome,LEN(nome)-pos2) // "Obama"
nome2 := SUBSTR(nome,pos2+1) // "Obama" também (mais fácil)
Se não consegue perceber nitidamente o que foi feito, coloque o nome num editor (ele deve mostrar os valores das colunas) e vá contando as colunas. Fica mais fácil.
Resolver problemas desse tipo demanda apenas análise e algum conhecimento acerca das funções de manipulação de strings disponíveis na biblioteca padrão do Clipper. Claro que há outras bibliotecas disponíveis, que contém funções que trazem a solução de forma mais diretá e fácil, mas eu quis me ater apenas ao que é padrão no Clipper.
pos1 := AT(" ", nome)
Analogamento, para obter o último nome, basta encontrar o último espaço. Aí usamos a função RAT(), parente da função AT(), mas que encontra a última ocorrência da string padrão:
pos2 := RAT(" ",nome)
Aí é só manipular esses valores para separar os alvos:
nome1 := LEFT(nome,pos1-1) // "Barack"
nome2 := RIGHT(nome,LEN(nome)-pos2) // "Obama"
nome2 := SUBSTR(nome,pos2+1) // "Obama" também (mais fácil)
Se não consegue perceber nitidamente o que foi feito, coloque o nome num editor (ele deve mostrar os valores das colunas) e vá contando as colunas. Fica mais fácil.
Resolver problemas desse tipo demanda apenas análise e algum conhecimento acerca das funções de manipulação de strings disponíveis na biblioteca padrão do Clipper. Claro que há outras bibliotecas disponíveis, que contém funções que trazem a solução de forma mais diretá e fácil, mas eu quis me ater apenas ao que é padrão no Clipper.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
