let rec replace (s1 : string) (s2 : string) (s : string) =
let l_s1 = String.length s1 in
let l_s2 = String.length s2 in
let rec replace_aux s pos =
let l_s = String.length s in
if(l_s1>l_s) then s
else if(l_s1=l_s && s1=s) then s2
else(
let l_s = String.length s in
let tmp_pos = indexStr s1 (String.sub s pos (l_s-(pos+0)) ) in
let new_pos = pos+tmp_pos in
if(tmp_pos<>(-1))
then(
if(new_pos > pos)
then replace_aux ((String.sub s 0 new_pos)^s2^(String.sub s (new_pos+l_s1) (l_s-new_pos-l_s1) )) (new_pos+l_s2)
else ((String.sub s 0 new_pos)^s2^(String.sub s (new_pos+l_s1) (l_s-new_pos-l_s1) ))
)
else s
)
in
replace_aux s 0