By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,930 Members | 1,487 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,930 IT Pros & Developers. It's quick & easy.

best way for Replace insensitive in strings

P: n/a
I need to replace all the occurences of a string within another string
(or stringbuilder):

Function ReplaceInsensitive(ByVal InputString As String, _
ByVal SubstringReplaced As
String, _
ByVal Replacement As
String) As String
'...
End Function

I wish the search for "SubstringReplaced" to be case insensitive.

I can think of various way to do it, but all I can think is quite
awkward. Can anybody suggest a good and fast method? There must be
something built in the language, but I am missing it

-Pam

Jun 13 '06 #1
Share this Question
Share on Google+
10 Replies


P: n/a
pa***********@libero.it wrote:
I wish the search for "SubstringReplaced" to be case insensitive.


\\\
Function ReplaceInsensitive(ByVal InputString As String, _
ByVal SubstringReplaced As String,
_
ByVal Replacement As String) As
String

Return Replace(InputString, SubStringReplaced, _
Replacement, Compare:=CompareMethod.Text)

End Function
///

--

(O)enone
Jun 13 '06 #2

P: n/a
NOT TESTED

Function ReplaceInsensitive(ByVal InputString As String, _
ByVal
SubstringReplaced As String, _
ByVal Replacement As
String) As String

Return InputString.Replace(SubstringReplaced, Replacement)
End Function
pa***********@libero.it wrote:
I need to replace all the occurences of a string within another string
(or stringbuilder):

Function ReplaceInsensitive(ByVal InputString As String, _
ByVal SubstringReplaced As
String, _
ByVal Replacement As
String) As String
'...
End Function

I wish the search for "SubstringReplaced" to be case insensitive.

I can think of various way to do it, but all I can think is quite
awkward. Can anybody suggest a good and fast method? There must be
something built in the language, but I am missing it

-Pam


Jun 13 '06 #3

P: n/a

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

Jun 13 '06 #4

P: n/a
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


Jun 13 '06 #5

P: n/a
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


Jun 13 '06 #6

P: n/a
Return Replace(sb.tostring, SubStringReplaced, _
Replacement, Compare:=CompareMethod.Text)

pa***********@libero.it wrote:
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


Jun 14 '06 #7

P: n/a
mmm ... Nice try Ahmed, but note that we are working with a
StringBuilder (infact, I proposed a *Sub* and *not* a Function). The
usefulness of a stringbuilder is that we have an immutable string, if
we convert it to a string, there is no point in using a StringBuilder.

-Pam

Ahmed ha scritto:
Return Replace(sb.tostring, SubStringReplaced, _
Replacement, Compare:=CompareMethod.Text)


Jun 14 '06 #8

P: n/a
Hello Pam-o,

Yer changing schtuff in the string by the very definition of "replace", so
your precious immutable string.. aint so immuted anymore.

-Boo
mmm ... Nice try Ahmed, but note that we are working with a
StringBuilder (infact, I proposed a *Sub* and *not* a Function). The
usefulness of a stringbuilder is that we have an immutable string, if
we convert it to a string, there is no point in using a StringBuilder.

-Pam

Ahmed ha scritto:
Return Replace(sb.tostring, SubStringReplaced, _
Replacement, Compare:=CompareMethod.Text)

Jun 14 '06 #9

P: n/a
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

Jun 14 '06 #10

P: n/a

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


Jun 14 '06 #11

This discussion thread is closed

Replies have been disabled for this discussion.