ok disculpen si no me explique correctamente
la razon por la que quiero hacer esto es la siguiente
tengo una funcion que "corta" cadenas de texto usando Pos y PosEx
Cita:
function CopyEntre(Cadena:string; Desde,Hasta:string):string;
{
Ejemplo:
Cadena:='213123123[bloke]Devuelve esto[/bloke]23423423245';
Trozo:=CopyEntre(Cadena,'[bloke]','[/bloke]';
Trozo valdría: 'Devuelve esto'
}
var
Inicio,Final: integer;
begin
Result:='';
Inicio:=Pos(Desde,Cadena)+Length(Desde);
Final :=PosEx(Hasta,Cadena,Inicio);
If (Inicio>0) and (Final>Inicio) then Result:=Copy( Cadena, Inicio, Final-Inicio );
end;
|
tengo una variable tipo String que contiene una cadena de texto
ejemplo:
texto := 'ABCDE-
HOLA+FGHIJ';
texto2 := CopyEntre(texto,'-','+')
La funcion "CopyEntre" corta todo lo que este entre - y + y me devuelve texto2 en este caso "HOLA", hasta aqui todo bien sin problemas
el problema es que esa string esta cambiando constantemente y despues tengo algo como esto
texto := 'ABCDE-
HOLA+FGHIJ-
ADIOS+KLMN';
texto2 := CopyEntre(texto,'-','+')
ahora quiero que la funcion "CopyEntre" me devuelva "ADIOS", pero en su lugar me sigue devolviendo "HOLA"
esto es porque la funcion que "corta" realiza la busqueda de cadenas de izquierda a derecha, ocea del inicio al final, por eso preguntaba como hacer este procedimiento pero de el final al inicio para obtener siempre el ultimo valor que se encuentre entre - y +
no se si exista una forma por ejemplo de guardar la posicion del ultimo caracter "+" y continuar desde ahi la prox busqueda y de esa forma saltar la primer frase
gracias.