Aspas
Tenho uma string assim
[b:5fda925afd]´no,me´,´sobre,nome´[/b:5fda925afd]
estou usando o StringReplace para substituir a [b:5fda925afd],[/b:5fda925afd] por | mas só quero substituir o que só está fora das aspas já que a [b:5fda925afd],[/b:5fda925afd] de [b:5fda925afd]no,me[/b:5fda925afd] e [b:5fda925afd]sobre,nome[/b:5fda925afd] está dentro das aspas!
Alguem poderia me dizer como fazer isso?
Quero que fique assim:
[b:5fda925afd]´no,me´|´sobre,nome´[/b:5fda925afd]
[b:5fda925afd]´no,me´,´sobre,nome´[/b:5fda925afd]
estou usando o StringReplace para substituir a [b:5fda925afd],[/b:5fda925afd] por | mas só quero substituir o que só está fora das aspas já que a [b:5fda925afd],[/b:5fda925afd] de [b:5fda925afd]no,me[/b:5fda925afd] e [b:5fda925afd]sobre,nome[/b:5fda925afd] está dentro das aspas!
Alguem poderia me dizer como fazer isso?
Quero que fique assim:
[b:5fda925afd]´no,me´|´sobre,nome´[/b:5fda925afd]
Rudá
Curtidas 0
Respostas
Marco Salles
25/11/2006
a partir do delphi 7.0 voce pode usar o PosEx
function StringReplaceEx(var Texto:String):String;
var
P,D:integer;
begin
P:=pos(´´´,texto);
while p > 0 Do
begin
D:=PosEx(´´´,texto,P+1);
if D-P=2 then
texto[P+1]:=´|´;
p:=D;
end;
result:=Texto;
end;
GOSTEI 0
Rudá
25/11/2006
Sim isso eu vi mas fiz outro teste e não funcionou
ele nunca vai ser sempre esse que eu falei, pode ser de qualquer jeito!
Coloquei isso [b:fbd8bc2337]´no,me´,,´sobre,nome´[/b:fbd8bc2337] e não mudou nada!
ele nunca vai ser sempre esse que eu falei, pode ser de qualquer jeito!
Coloquei isso [b:fbd8bc2337]´no,me´,,´sobre,nome´[/b:fbd8bc2337] e não mudou nada!
GOSTEI 0
Marco Salles
25/11/2006
Ruda meu amigo , vamos com calma...
[color=darkred:6fe63ce35f][b:6fe63ce35f]é claro que não vai ocorrer nada , pois pela logica empregada nesse caso não vai ter duas Aspas seguidas separadas por uma virgula...[/b:6fe63ce35f][/color:6fe63ce35f]
Pra se ter um resposta logica é preciso que set tenha uma pergunta logica..
Não da para saber a diferença de :
´no,me´,,´sobre,nome´ de ´no,me´,A,´sobre,nome´ OU ´no,me´,AB,´sobre,nome´ OU ´no,me´,ABC,´sobre,nome´ etc...
Sem que se defina algum[b:6fe63ce35f] crietério [/b:6fe63ce35f]logico
Posso te fornecer também um algoritimo que troque todas as virgulas entre duas aspas por |
assim:
mas acho que não da para fazer muita coisa quando se tem outros caracteres envolvidos entre essas Virgulas.. Por exemplo
[b:6fe63ce35f]´no,me´,,,,,A,,,,,,,,´sobre,nome´ [/b:6fe63ce35f] , a não ser que voce defina , que algo que de para tratar isto... com por exemplo situação que se iniciar com virgula etc...
inicialmete Voce me passou isto
[b:6fe63ce35f]´no,me´,´sobre,nome´ para ser transF em : ´no,me´|´sobre,nome´[/b:6fe63ce35f]
Ai eu fiz este algoritmimo que atende a situação , para Substituir todas as Virgulas que estão entre duas aspas seguidas... Porque , pelo que tudo indica era este o seu problema inicial
Porém voce testou com isso:
[b:6fe63ce35f]´no,me´,,´sobre,nome´ [/b:6fe63ce35f]
[color=darkred:6fe63ce35f][b:6fe63ce35f]é claro que não vai ocorrer nada , pois pela logica empregada nesse caso não vai ter duas Aspas seguidas separadas por uma virgula...[/b:6fe63ce35f][/color:6fe63ce35f]
Pra se ter um resposta logica é preciso que set tenha uma pergunta logica..
Não da para saber a diferença de :
´no,me´,,´sobre,nome´ de ´no,me´,A,´sobre,nome´ OU ´no,me´,AB,´sobre,nome´ OU ´no,me´,ABC,´sobre,nome´ etc...
Sem que se defina algum[b:6fe63ce35f] crietério [/b:6fe63ce35f]logico
entende-se que voce esta carregando algo de algum lugar para outro lugar , aonde se usou a virgula para separar as strings... e esta virgula voce na hora da importação quer substituir pelo |... Porem o texto ou conteudo que se esta importando deve ter uma lógica , senão não tem muito o que fazer ,
Posso te fornecer também um algoritimo que troque todas as virgulas entre duas aspas por |
assim:
´no,me´,,,,,,,,,,,,,,´sobre,nome´ por ´no,me´|´sobre,nome´ ou
´no,me´|||||||||||´sobre,nome´ ;
mas acho que não da para fazer muita coisa quando se tem outros caracteres envolvidos entre essas Virgulas.. Por exemplo
[b:6fe63ce35f]´no,me´,,,,,A,,,,,,,,´sobre,nome´ [/b:6fe63ce35f] , a não ser que voce defina , que algo que de para tratar isto... com por exemplo situação que se iniciar com virgula etc...
GOSTEI 0
Marco Salles
25/11/2006
com eu disse antes um algoritimo para trocar todas as virgulas entre duas aspas pelo | , pode ser :
Porem , ele so tem condiçoes de trocar se entre essas duas aspas tiver somente o caracter Virgula
Assim por exemplo:
porem caso necessite que no lugar de tantas virgulas aparecre somente
um Unico | , com pouca modificação se consegue...
Emfim , no inicio me confundi um pouco quando voce disse que ja tinha tentando com o StringReplace e não tinha conseguido...
No caso de querer trocar uma unica virgula entre duas aspas ´,´ por ´|´ não precisa do algoritimo anterior , a função[b:dd58382603] StringReplace citada por voce , bem como a função AnsiReplaceStr(texto,´´,´´,´´|´´)[/b:dd58382603] , dara conta do recado..
function StringReplaceEx(var Texto:String):String;
var
P,D,V,U,i:integer;
begin
u:=0;
P:=pos(´´´,texto);
while p > 0 Do
begin
D:=PosEx(´´´,texto,P+1);
v:=posEx(´,´,texto,P+1);
U:=V;
While V-P = 1 do
begin
P:=V;
v:=posEx(´,´,texto,v+1);
end;
if D - P =1 then
for i:=U to D-1 do
texto[i]:=´|´;
p:=D;
end;
result:=Texto;
end;
Porem , ele so tem condiçoes de trocar se entre essas duas aspas tiver somente o caracter Virgula
Assim por exemplo:
´,´,´,d´,K..,´,´´,´,,,,,,,´ ele troca por :
´|´|´,d´,K..,´|´´|´|||||||´
porem caso necessite que no lugar de tantas virgulas aparecre somente
um Unico | , com pouca modificação se consegue...
Emfim , no inicio me confundi um pouco quando voce disse que ja tinha tentando com o StringReplace e não tinha conseguido...
No caso de querer trocar uma unica virgula entre duas aspas ´,´ por ´|´ não precisa do algoritimo anterior , a função[b:dd58382603] StringReplace citada por voce , bem como a função AnsiReplaceStr(texto,´´,´´,´´|´´)[/b:dd58382603] , dara conta do recado..
GOSTEI 0