Jump to content

Tratamento de string...


Recommended Posts

Posted

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!

MD

Posted

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 😄

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 😄

}

Posted

Isso já eu fiz, usando o split  😄

     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...

MD

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.