• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

powerPT

Tratamento de string...

4 mensagens neste tópico

Num vCard, que é plain text, podemos sacar a info. Estou a fazer um script para um ambiente web para importação de vCards...

Agora o problema está na morada, na tabela da BD são campos diferentes como morada, localidade, cp_sufixo, cp_prefixo

Vou dar exemplos, todos diferentes da linha da morada do vCard, todos válidos, o pior é sacar a info disto!

1º Exemplo:

ADR;HOME:;;Rua XPTO nº X;Valongo;Porto;4444-560;Portugal

2º Exemplo:

ADR;HOME:;;Rua XPTO nº X;Valongo;4444-560

3º Exemplo:

ADR;HOME:;;Rua XPTO nº X;Porto;4444-560

Pronto, acho que fui explicito, está aqui um caso bicudo!  :wallbash:

Ou seja, todos eles são válidos no vCard, depois para importar é que é complicado!

Ou seja, se fosse um campo todo junto era fácil, um split e até ficava tudo porreiro, o problema é que na BD são campos diferentes (morada, cp_sufixo, cp_prefixo, localidade) e o problema está mesmo aqui, separar correctamente a linha para inserir nos campos correctos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oi

olha experimenta assim

fazes qq coisa assim

vCardString = {aqui metes o valor do Vcard}
int indexInicio = 0;
int indexFim =0;

for(int i = 0; i< vCardString.Length; i++)
{
  if (vCardString[i] == ';')
{
indexFim = i;
value = vCardString.Substring(0,i);
indexInicio = i;
}

pa isto foi feito de cabeça e ta incompleto mas a ideia é... a ordem dos valores é sequencial..... incias tudo a zero, procuras um ponto e virgula, indicas o index do ponto e virgula e tens o primeiro valor

depois de guardares o primeiro valor convinientemente, dizes q o index é o do fim

e assim sucessivamente :D

atenção tenho 90% de certeza q o  codigo assim so não vai funcionar... é so uma ideia para o algoritmo.. agora tenta fazer o resto :D

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso já eu fiz, usando o split  :D

     Char[] splitter = { ';' };

                String[] info = new String[4];
                info = morada.Split(splitter);

                for (int x = 0; x < info.Length; x++)
                {
                    Response.Write(info[x] + "<br />");
                }

O que me está a atrofiar é a ordem das coisas, eu acho que é impossível fazer algum algoritmo a tratar do problema das diferenciação da morada, código postal e localidade, é que pode estar em vários formatos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não pode ser impossivel porque senão como é que tu vias a info toda direita dos vcards? sem ser a abrir o .vcard com o notepad por exemplo??

Isso tem certamente um RFC associado, é uma questão de o leres e tentares perceber como fazem isso...

RFC: http://www.ietf.org/rfc/rfc2426.txt

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora