Como usar um delimiter específico, importação de nomes?
Olá amigos bom dia, estou com uma dúvida, e preciso de uma ajuda a quem poder fazer esse grande favor.
Estou importante para uma listview os nomes de músicas, para cadastro em um sistema, e o que preciso? Separar nome do artísta com o nome da música.
Então preciso usar o delimitador '' - ''
Como podem ver, é um traço com espaço antes e depois, o porque deste motivo?
As vezes vem músicas com nomes que tem traço mas sem espaço, então ele irá separar só quando tiver o traço com espaço antes e depois:
Exemplo
José Souza - Deixe-me em paz
Como podem ver tem dois traços nesta música, mas quero que ele separe onde tem o traço com espaço:
artista música
José Souza Deixe-me em paz
Então como eu faria isso no código em delphi? como usar um delimiter pra isso?
Obrigado a todos.
Estou importante para uma listview os nomes de músicas, para cadastro em um sistema, e o que preciso? Separar nome do artísta com o nome da música.
Então preciso usar o delimitador '' - ''
Como podem ver, é um traço com espaço antes e depois, o porque deste motivo?
As vezes vem músicas com nomes que tem traço mas sem espaço, então ele irá separar só quando tiver o traço com espaço antes e depois:
Exemplo
José Souza - Deixe-me em paz
Como podem ver tem dois traços nesta música, mas quero que ele separe onde tem o traço com espaço:
artista música
José Souza Deixe-me em paz
Então como eu faria isso no código em delphi? como usar um delimiter pra isso?
Obrigado a todos.
Júnior Pinheiro
Curtidas 0
Respostas
Jorge Pinto
11/11/2019
Fala Júnior !! Tranquilo ??
Júnior, há anos atrás também tive uma necessidade parecida com a sua e então resolvi desenvolver uma função para fazer essa tarefa,
dá uma olhada no código abaixo:
Vc utiliza ela assim:
A variável terceiroNome conterá "Santos"...
ou como no seu caso:
em artista vc terá "José Souza" e em musica vc terá "Deixe-me em paz" :))
Copia ela e insere em um projeto seu, faça alguns testes... acho que poderá lhe ajudar.
Espero ter ajudado,
Abraço e bons códigos.
Júnior, há anos atrás também tive uma necessidade parecida com a sua e então resolvi desenvolver uma função para fazer essa tarefa,
dá uma olhada no código abaixo:
//SST_Pedaco - Devolve o conteudo de um pedaço de uma string delimitada por uma // substring delimitadora. //Parâmetros: // source - String da qual será extraído o resultado. // Del - String delimitadora. Essa string, ou caracter que é mais // comum, nunca fará parte do resultado, servirá apenas para // delimitar(dividir) a source em partes. // Index - Número(posição) da parte a ser resgatada de source. // //Retorno: String - Contera a parte de source que foi extraída. function SST_Pedaco(Source, Del: string; Index: Integer): string; var Posi, cont, pini: Integer; ret: string; begin Ret := ''; if (Source <> '') and (Del <> '') then begin posi := Pos(Del, Source); if posi < 1 then begin if Index = 1 then Ret := Source else Ret := '' end else begin pini := Pos(Del, Source); repeat Delete(Source, pini, Length(Del)); Insert(#1, Source, pini); pini := Pos(Del, Source); until (pini = 0); cont := 0; Del := #1; repeat Inc(cont); Ret := ''; for pini := 1 to posi - 1 do Ret := Ret + Source[pini]; Source := Copy(Source, posi + 1, Length(Source)); posi := Pos(Del, Source); if posi = 0 then posi := Length(Source) + 1; until cont >= Index; end; end; Result := Trim(Ret); end;
Vc utiliza ela assim:
terceiroNome := SST_Pedaco("João Augusto Santos", " " , 3);
A variável terceiroNome conterá "Santos"...
ou como no seu caso:
artista := SST_Pedaco("José Souza - Deixe-me em paz", " - " , 1);
musica := SST_Pedaco("José Souza - Deixe-me em paz", " - " , 2);
musica := SST_Pedaco("José Souza - Deixe-me em paz", " - " , 2);
em artista vc terá "José Souza" e em musica vc terá "Deixe-me em paz" :))
Copia ela e insere em um projeto seu, faça alguns testes... acho que poderá lhe ajudar.
Espero ter ajudado,
Abraço e bons códigos.
GOSTEI 0