F_GLOBAL_REPLACE

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Function Name : f_global_replace
// Argument Name : as_source, Arg Type : String, Pass By : Value
//                           as_old, Arg Type : String, Pass By : Value
//                           as_new, Arg Type : String, Pass By : Value
//                           ab_ignorecase, Arg Type : Boolean, Pass By : Value
// Return Type :      String
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//    Description:      Replace all occurrences of one string inside another with
//                        a new string.
//
//    Arguments:
//    as_Source         The string being searched.
//    as_Old              The old string being replaced.
//    as_New             The new string.
//    ab_IgnoreCase    A boolean stating to ignore case sensitivity.
//
//    Returns:          string
//                          as_Source with all occurrences of as_Old replaced with as_New.
//                          If any argument's value is NULL, function returns NULL.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Long    ll_Start
Long    ll_OldLen
Long    ll_NewLen
String ls_Source

//Check parameters
If IsNull(as_source) or IsNull(as_old) or IsNull(as_new) or IsNull(ab_ignorecase) Then
    string ls_null
    SetNull(ls_null)
    Return ls_null
End If

//Get the string lenghts
ll_OldLen = Len(as_Old)
ll_NewLen = Len(as_New)

//Should function respect case.
If ab_ignorecase Then
    as_old = Lower(as_old)
    ls_source = Lower(as_source)
Else
    ls_source = as_source
End If

//Search for the first occurrence of as_Old
ll_Start = Pos(ls_Source, as_Old)

Do While ll_Start > 0
    // replace as_Old with as_New
    as_Source = Replace(as_Source, ll_Start, ll_OldLen, as_New)
   
    //Should function respect case.
    If ab_ignorecase Then
        ls_source = Lower(as_source)
    Else
        ls_source = as_source
    End If
   
    // find the next occurrence of as_Old
    ll_Start = Pos(ls_Source, as_Old, (ll_Start + ll_NewLen))
Loop

Return as_Source

0 comments:

Post a Comment