Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Modules / DAO / VBA / March 2005

Tip: Looking for answers? Try searching our database.

Comparing 2 strings for matches in any order

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
erighter - 09 Mar 2005 17:35 GMT
I'm trying to figure out a way to tell if any combination of the words
(single space separated) in List A exactly matches any combination of the
words in List B (including only matching the exact number of words)

I would be happy to use either Excel or Access to work on this...

List A
--------------
row 1: apple peach pear
row 2: bear dog cat
row 3: jump rope

List B
--------------
row 1: rope jump
row 2: cat bear dog
row 3: pear dog porcupine
row 4: apple peach pear grape

End Results:
--------------
(List B)
row 1: rope jump                        (matches Column A row 3)
row 2: cat bear dog                     (matches Column A row 2)    
row 3: pear dog porcupine           (no match)
row 4: apple peach pear grape     (no match - too many words in Column B)

My idea so far is to do count the words in each column so that I will know
if the match is valid because the number of words in each comparison has to
be equal  (each string of multiple words uses a single space delimiter).

Then I was trying to find a way to put each word (substring) into it's own
column/field, because I think that would allow me to use the Excel Match
function to compare a word agains the array of possible words....

Column A:                       Column B:
          A        B        C                 A        B        C
         -----  -------  --------         -----  -------   ------
row1 : bear    dog      cat             cat     bear     dog          

If cat in Column B row 1 matched cat in Column A row 1, then incement a
counter.
If not, I need to compare to Column A row 2 and so forth.
Then the whole process repeats, matching Column B's bear to the array - row
by row.

In the end, if the counter matches the count of words, then we can determine
that there was a positive match made for that string in some combination.

This was just my initial idea on how to tackle this problem, but I can't
parse out the keywords into individual columns to try it.  

All ideas are greatly appreciated.  Thanks!
Tim Ferguson - 09 Mar 2005 18:29 GMT
> I would be happy to use either Excel or Access to work on this...

Nah: use Perl..!

Tim F
John Nurick - 09 Mar 2005 21:05 GMT
>Nah: use Perl..!

That was my thought ... but sometimes SQL is nearly as good. Wouldn't it
be possible to import the data into this table

    tblWords
     List*
     Row*
     Word*

and then post a question in m.p.a.queries?

Otherwise, I've got a little VBA function that executes a Windows
command line and returns whatever the command sent to STDOUT ... so
maybe Perl is the answer.

--
John Nurick [Microsoft Access MVP]

Please respond in the newgroup and not by email.
Dirk Goldgar - 09 Mar 2005 18:44 GMT
> I'm trying to figure out a way to tell if any combination of the words
> (single space separated) in List A exactly matches any combination of
[quoted text clipped - 54 lines]
>
> All ideas are greatly appreciated.  Thanks!

Hmm.  You could write a function that sorts each string of words and
returns the sorted string.  Then matching one list against the other
would be a matter of comparing the function's output for each row.

The function would receive a string (the unsorted list of words) and
return a string (the sorted list).  It could use the Split function to
parse the unsorted string into an array, then use a simple sort algorthm
to sort that list (VB code for sorting arrays is easy to find on the
web), and then use the Join function to reassemble the sorted array into
a string.

Signature

Dirk Goldgar, MS Access MVP
www.datagnostics.com

(please reply to the newsgroup)

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.