Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As _ Any, pSrc As Any, ByVal ByteLen As Long)' This is a replacement for the "Replace" function provided by VB6,' though for single character replacements only. The speed difference varies,' depending on how many characters it needs to replace / the length of the ' string, but the ReplaceChar function has been found to go from approximately ' 1.3 times to 10 times (possibly even more depending) faster. Another point ' worth mentioning is if you check the "Assume No Aliasing" and/or the "Remove ' Array Bounds Checks" compiler options, the routine will go faster.'' Example:' Dim sInput As String' sInput = "This is a test string"' MsgBox (ReplaceChar(sInput, "s", "*"))Function ReplaceChar(ByVal strExpression As String, ByVal findChar As String, _ ByVal replChar As String) As String Dim arrByte() As Byte, lngUB As Long, lngLoop As Long Dim bytFind As Byte, bytReplace As Byte ' convert the two characters to byte bytFind = Asc(findChar) bytReplace = Asc(replChar) ' get length of string in bytes, and convert to byte array lngUB = LenB(strExpression) ReDim arrByte(lngUB - 1) As Byte CopyMemory arrByte(0), ByVal StrPtr(strExpression), lngUB ' swap characters For lngLoop = 0 To lngUB - 1 Step 2 If arrByte(lngLoop) = bytFind Then arrByte(lngLoop) = bytReplace Next ' convert back to string ReplaceChar = Space$(lngUB 2) CopyMemory ByVal StrPtr(ReplaceChar), arrByte(0), lngUBEnd Function' If you liked this routine pay a visit to the author's website at http://' shadowdc.sourceforge.net/