A special award to who finds the most efficient method
(grabbed from the web, easily adaptable to stringbuilder logic)
-tom
'--- Custom Replace Function CReplace
'--- VB.NET Loop Version
'--- intMode = 0 = Case-Sensitive
'--- intMode = 1 = Case-Insensitive
Function CReplace(ByVal strExpression As String, _
ByVal strSearch as String, _
strReplace As String, _
intMode as Integer _
) As String
Dim strReturn as String
Dim lngPosition As Long
Dim strTemp As String
If intMode = 1 Then '--- vbTextCompare
strReturn = ""
strSearch = strSearch.ToUpper()
strTemp = strExpression.ToUpper()
lngPosition = strTemp.IndexOf(strSearch)
Do While lngPosition >= 0
strReturn = strReturn + strExpression.SubString(0,lngPosition) +
strReplace
strExpression =
strExpression.SubString(lngPosition+strSearch.Length)
strTemp = strTemp.SubString(lngPosition+strSearch.Length)
lngPosition = strTemp.IndexOf(strSearch)
Loop
strReturn = strReturn + strExpression
Else
'--- vbBinaryCompare
strReturn = strExpression.Replace(strSearch,strReplace)
End If
CReplace = strReturn
End Function
'--- Custom Replace Function CReplace
'--- VB.NET Recursive Version
'--- intMode = 0 = Case-Sensitive
'--- intMode = 1 = Case-Insensitive
Function CReplace( strExpression As String, _
strSearch as String, _
strReplace As String, _
intMode as Integer _
) As String
Dim strReturn as String
Dim lngPosition As Long
Dim strTemp As String
If intMode = 1 Then '--- vbTextCompare
strTemp = strExpression.ToUpper()
lngPosition = strTemp.IndexOf(strSearch.ToUpper())
If lngPosition >= 0 Then
strTemp = strExpression.Remove(lngPosition,strSearch.Length)
strTemp = strTemp.Insert(lngPosition,strReplace)
strReturn = CReplace(strTemp,strSearch,strReplace,intMode)
Else
strReturn = strExpression
End If
Else
'--- vbBinaryCompare
strReturn = strExpression.Replace(strSearch,strReplace)
End If
CReplace = strReturn
End Function
'--- Custom Replace Function CReplace
'--- VB.NET RegExp Version
'--- intMode = 0 = Case-Sensitive
'--- intMode = 1 = Case-Insensitive
Public Function CReplace(strExpression As String, _
ByVal strSearch As String, _
strReplace As String, _
intMode as Integer _
) As String
Dim strReturn As String
Dim lngPosition As Long
Dim strTemp as String
If intMode=1 Then strSearch=GetCaseInsensitiveSearch(strSearch)
strReturn = Regex.Replace(strExpression,strSearch,strReplace)
CReplace = strReturn
End Function
' Creates a case-insensitive regular expression search string
' For Example:
' "[fF][oO][oO][bB][aA][rR]"= GetCaseInsensitiveSearch("FooBar")
Public Function GetCaseInsensitiveSearch(strSearch As String) As String
Dim strReturn As New String(")
Dim chrCurrent As char
Dim chrLower As char
Dim chrUpper As char
Dim intCounter As Integer
For intCounter = 0 To strSearch.Length-1
chrCurrent=strSearch.Chars(intCounter)
chrLower = char.ToLower(chrCurrent)
chrUpper = char.ToUpper(chrCurrent)
If chrUpper = chrLower Then
strReturn = strReturn + chrCurrent
Else
strReturn = strReturn + "[" + chrLower + chrUpper + "]"
End If
Next
GetCaseInsensitiveSearch = strReturn
End Function
for instance:
http://authors.aspalliance.com/bbilbro/DesktopDefault.aspx?tabindex=1&tabid=7&ArticleID=4
Cor Ligthert [MVP] ha scritto: