Página 1 de 1

Como obter 1º e ultima palavra num campo

Enviado: 08 Nov 2008 09:37
por theramones
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

Re: Como obter 1º e ultima palavra num campo

Enviado: 08 Nov 2008 11:18
por Maligno
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.