Comparing Strings Not in the Same Order

Here is another situation that needed to be solved. I want to compare the name of a company from one page, to the company name that appears on their profile to make sure they are the same. The problem comes in because the names aren't listed the same way in both places.

On the first page, the name can be listed as:

Good, Johnny B

On the next page, it can be listed as:

Johnny B. Good

However, that's not always the case. In some cases the full company name can be listed in both places such as:

Amalgamated Beverage Coop

Reversing the order or switching around the last word isn't always correct. So the question is, how can these two strings be compared even though they aren't in the same order? Built in functions like equal, contains, matches, and compareTo won't work correctly.

If you go searching, there are several possible solutions. Some look relatively reliable, while others look overly complex. But based on several common theories, it looks like a reasonable solution is to break the words apart then do the comparison. That turns out to be pretty straightforward and can be done in a few steps.

I don't know if this solution borders on being clever, or stands right in the middle of total hackery. I tested it against multiple examples, and it did work, so here goes.

If you notice above, there is a "," in the first example and a "." in the second. But, they are not common to each other. The first order of business is to use replaceAll so we only have text to work with. We need to remove everything that isn't a letter of the alphabet or the space between words.

.replaceAll("[^a-zA-Z ]","")

Next, the words need to parsed into blocks so they can be compared. This can be done using the .split() command. In this case, split on the space that exists between each word. For this example, we will get 3 results.

.split(" ")

Finally, the words need to be sorted so they can be compared correctly:


This creates, "Johnny", "B", "Good" for both strings, which is then turned into, "B", "Good", "Johnny" for both. A comparison of that will shown as the same. Even when the company name is in the same order, it is still broken apart, but the same words exist for each. That should be considered a match.

Keep in mind this won't be 100% accurate 100% of the time. It will be possible for two different companies to use the same words in a different order. However, that is a corner case and this solution still works for 90% of the situations.

List company1
List company2
company1=WebUI.getText(findTestObject('Company Name 1').replaceAll("[^a-zA-Z ]","").split(" ").sort()
company2=WebUI.getText(findTestObject('Company Name 2').replaceAll("[^a-zA-Z ]","").split(" ").sort()

if (company1!=company2){
    log.logError("ERROR: The Company Name for this profile does not match")
    KeywordUtil.markFailed("ERROR: The Company Name for this profile does not match")

Other articles of interest:

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Comments
  • How To Disable the Quicken Registration Prompt (32)
    • Mike: Hi, for anyone still trying to run older versions of Quicken, mine is 2004, I hope this helps. I managed to get it running on my old laptop by adding the three missing dll files, when I needed to upgrade I thought I would be able...
    • Juani: Hi, I have a registered Quicken 2016 and now my files are being held hostage by Intuit, cannot log in with my ID unless I upgrade therefore buy a subscription, I need to access my files, please HELP. Thanks
    • David: A BIG Thank you! I regularly reinstall Windows OS’s using different hardware configs. In short, Quicken 2011 (it’s March of 2020 as I write this) has been a program I’ve been very happy with and continue to use....
    • Karen L: Today I rang Reckon Australia again, got a different guy and he talked me through the process of getting me a new product key to enter since I already had the licence and it had been extended. Reckon have only extended it by 1...
    • Karen L: I have Australian Quicken 2008 on Windows 8.1. It keeps asking me to renew my licence which Reckon did for me however the activation won’t work. I tried this to disable the registration prompt however it did not stop the...
  • Enter dates into a date picker for Chrome and Firefox (1)
    • Prasanna: Hello, How to enter a previous month FIRST day and LAST day from the system date. Thanks Prasanna
  • Building Relationships with Developers (1)
    • Carlos Herrera: Ah yes. I have a team of software developers and it is genuinely so hard to keep them in the loop during projects. Though the more we work the better the communication becomes and we go from a trail and error process to a...
  • Integrating DevonAgent Pro with Alfred (1)
    • J. Garr: Beautiful, sweet, and simple. I love it; thanks for posting this solution.
  • Round and Round with the For..Next in Katalon Studio (1)
    • Sweet Ophaline Labador: Hello can you help me how to loop this scenario. Checking the elements is just the same. I want to check that the following function is available in Track Shipment – clicking on this can...
  • Parsing Strings in Katalon – Split, Substring and Readlines (6)
    • Don Pedro: String tempText=”Date Month January. Revenue $1,355,721.00″ println(tempText.split(“ \$”)[1]) You need to escape the $ with \$ The [1] on the split captures characters on the right of the split [0]...
    • Prasad: Hi, I need to get the substring from the below string ‘Date Month January. Revenue $1,355,721.00’ I want to extract text after $ value. Please help Thank you
  • Working with Dates and Date Formatting in Katalon Studio (15)
    • Sangeethaa: How to get previous day’s date(Yesterday’s date)? Actually I was using today.previous() before,it was working fine till today morning.Now its not retrieving right date. Can anyone please guide me on this.
    • Don Pedro: That could be a little tricky. First, is the text/format always going to be the same? You will need to do some parsing. Separate the first but of text at 2019. After that, split the text again to get rid of Central Standard...
  • Output status messages and test information by writing to the Log File Viewer in Katalon Studio (6)
    • Saranya: Good One. Could you plz share link to access all your katalon related blogs. ThankQ
    • Rodrigo Calabretta: I’m using the KeywordUtil.markFailed or KeywordUtil.markError and my test stops is being shown as Error and If I use in the @afterTestCase the testCaseContext.getTestCaseSta tus() to show the status test case...