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.Leng th)
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/bbilb...=7&ArticleID=4
Cor Ligthert [MVP] ha scritto:
Pamela,
If it are only words with a first upercase, I would just do it twice.
Otherwise Regex will be your needed tool.
RegexLib
http://www.regexlib.com/Default.aspx
Expresso
http://www.ultrapico.com/Expresso.htm
It needs a real hobbyist to help you then with your problem.
I hope this helps a little bit?
Cor
<pa***********@libero.it> schreef in bericht
news:11**********************@f6g2000cwb.googlegro ups.com... mmm ... no, remember the condition that it must be "case insensitive".
I don't see an option to specify it with the StringBuilder Replace
method (but I may be missing it (?) ).
-P
Ahmed ha scritto:
Samething,
sb.Replace(substringreplaced, replacement)
pa***********@libero.it wrote:
> The version provided by (O)enone works fine. Thanks for the help!
>
> (Ahmed suggestion is on the right track, omitting the CompareMethod is
> like: Compare:=CompareMethod.Binary)
>
>
> Any hint, instead, for the case when a StringBuilder is used?
>
> Sub ReplaceInsensitive(ByVal Sb As System.Text.StringBuilder, _
> ByVal SubstringReplaced As String, _
> ByVal Replacement As String)
> '...
> End Sub
>
>
> Thank you very much.
>
> -Pam