how i can filter my strings

Snitz™ Forums 2000
https://forum.snitz.com/forumTopic/Posts/67936?pagenum=1
05 November 2025, 09:35

Topic


sadra
how i can filter my strings
07 December 2008, 03:02


Hi, to all
please help...
I have 2 string(myString1 & myString2) and i want filter the myString2 from myString1

myString1 = txt1, txt2, txt3, txt4
myString2 = txt1, txt2

myString3 = txt3, txt4

how i can filter myString2 from myString1 and i get myString3?<

 

Replies ...


AnonJr
07 December 2008, 08:57


Ask over at http://stackoverflow.com ?
While we do occasionally foray into general programming (and some non-programming) topics, we tend to be a little more tightly focused. You may get a faster result by going to a general programming Q&A site like stackoverflow.com<
cripto9t
07 December 2008, 11:00


there are probably many ways to do this. I had some time on my hands and wrote this.
It looks complicated but its not and it may not be what you want, if not, someone may find it useful.
Code:
<%

Dim myString1
Dim myString2
Dim txt1, txt2, txt3, txt4
dim FilteredStr

txt1 = "Bob"
txt2 = "Carol"
txt3 = "Ted"
txt4 = "Alice"

myString1 = txt1 & "," & txt2 & "," & txt3 & "," & txt4
myString2 = txt1 & "," & txt2

FilteredStr = ReturnFilteredStr(myString1,myString2) 'function returns new filtered string

WriteFilteredStr FilteredStr 'sub to write the new string to page

Function ReturnFilteredStr(str1,str2)
Dim strToFilter
Dim strWhatToFilter
Dim strFiltered
Dim objRegex
Dim iCnt
Dim iCnt2
Dim fStr

strToFilter = split(str1,",") 'myString1 split at comma
strWhatToFilter = split(str2,",") 'myString2 split at comma
strFiltered = "" 'variable to hold strings that make it through the filter

Set objRegex = New Regexp 'Set new regular expression to handle match and replace duties
objRegex.ignorecase = true
objRegex.global = true

for iCnt = 0 to uBound(strToFilter) 'Loop through myString1
fStr = trim(strtoFilter(iCnt)) 'String to Match


for iCnt2 = 0 to uBound(strWhatToFilter) '2nd loop to cycle through myString2
fStr2 = trim(strToFilter(iCnt2)) 'String pattern

objRegex.Pattern = fStr2
fStr = objRegex.Replace(fStr,"") 'If String to Match = String pattern then String to match is replaced with ""
next

if fStr <> "" then
if strFiltered <> "" then
strFiltered = strFiltered & "," & fStr 'if string to Match made it through the filter its added to the new string
else
strFiltered = fStr
end if
end if
next

Set objRegex = Nothing 'object clean up

ReturnFilteredStr = strFiltered
End Function

Sub WriteFilteredStr(str)
Dim strArr
Dim iCnt

if str <> "" then
strArr = split(str,",")
for iCnt = 0 to uBound(strArr)
Response.Write strArr(iCnt) & "<br />"
next
else
Response.Write "Your filtered string is empty."
end if
End Sub

%>

<
Carefree
08 December 2008, 10:06


Here, this is a bit easier:

Code:

inta=len(MyString2)
for ia=1 to (len(MyString1)-inta)
if mid(MyString1,ia,inta)=MyString2 then
MyString3=left(MyString1,ia-1)&mid(MyString1,ia+inta)
end if
next
<
sadra
09 December 2008, 22:52


Originally posted by AnonJr
Ask over at http://stackoverflow.com ?
While we do occasionally foray into general programming (and some non-programming) topics, we tend to be a little more tightly focused. You may get a faster result by going to a general programming Q&A site like stackoverflow.com

Ok!<
sadra
09 December 2008, 22:53


Originally posted by cripto9t
there are probably many ways to do this. I had some time on my hands and wrote this.
It looks complicated but its not and it may not be what you want, if not, someone may find it useful.
Code:
<%

Dim myString1
Dim myString2
Dim txt1, txt2, txt3, txt4
dim FilteredStr

txt1 = "Bob"
txt2 = "Carol"
txt3 = "Ted"
txt4 = "Alice"

myString1 = txt1 & "," & txt2 & "," & txt3 & "," & txt4
myString2 = txt1 & "," & txt2

FilteredStr = ReturnFilteredStr(myString1,myString2) 'function returns new filtered string

WriteFilteredStr FilteredStr 'sub to write the new string to page

Function ReturnFilteredStr(str1,str2)
Dim strToFilter
Dim strWhatToFilter
Dim strFiltered
Dim objRegex
Dim iCnt
Dim iCnt2
Dim fStr

strToFilter = split(str1,",") 'myString1 split at comma
strWhatToFilter = split(str2,",") 'myString2 split at comma
strFiltered = "" 'variable to hold strings that make it through the filter

Set objRegex = New Regexp 'Set new regular expression to handle match and replace duties
objRegex.ignorecase = true
objRegex.global = true

for iCnt = 0 to uBound(strToFilter) 'Loop through myString1
fStr = trim(strtoFilter(iCnt)) 'String to Match


for iCnt2 = 0 to uBound(strWhatToFilter) '2nd loop to cycle through myString2
fStr2 = trim(strToFilter(iCnt2)) 'String pattern

objRegex.Pattern = fStr2
fStr = objRegex.Replace(fStr,"") 'If String to Match = String pattern then String to match is replaced with ""
next

if fStr <> "" then
if strFiltered <> "" then
strFiltered = strFiltered & "," & fStr 'if string to Match made it through the filter its added to the new string
else
strFiltered = fStr
end if
end if
next

Set objRegex = Nothing 'object clean up

ReturnFilteredStr = strFiltered
End Function

Sub WriteFilteredStr(str)
Dim strArr
Dim iCnt

if str <> "" then
strArr = split(str,",")
for iCnt = 0 to uBound(strArr)
Response.Write strArr(iCnt) & "<br />"
next
else
Response.Write "Your filtered string is empty."
end if
End Sub

%>



Tanx Mr cripto9t
Best Regards<
sadra
09 December 2008, 22:57


Originally posted by Carefree
Here, this is a bit easier:

Code:

inta=len(MyString2)
for ia=1 to (len(MyString1)-inta)
if mid(MyString1,ia,inta)=MyString2 then
MyString3=left(MyString1,ia-1)&mid(MyString1,ia+inta)
end if
next

Tanx Mr Carefree
Best Regards<
Carefree
09 December 2008, 23:46


You're welcome. Feel free to ask questions any time.<
Etymon
09 December 2008, 23:55


Mr. Carefree ... that kind of has a cool ring to it! smile<
AnonJr
10 December 2008, 09:07


Originally posted by Etymon
Mr. Carefree ... that kind of has a cool ring to it! smile
Kinda like "Mr. Feel Good"? tongue<
Carefree
10 December 2008, 13:07


Should have had a career in Reggae?<
© 2000-2021 Snitz™ Communications