Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in NYC Sept 4th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
baarthe
Contributor
Contributor

How to split an address in TALEND based on UPPER CASE values?

I want to split the below address from single column to multiple columns using talend.

Input

|ADDRESS|

|15 St. Patrick Rd NORTH WEST LONDON|

Expected Output

|ADDRESS_LINE1 | ADDRESS_LINE2 |

|15 St. Patrick Rd | NORTH WEST LONDON |

Labels (2)
1 Reply
Anonymous
Not applicable

Hi

No a function is available for split the address based on UPPER CASE value, here I write a user routine to return the word which has all upper case character.

 

public class myroutine {

 

static String[] words;

static String currentWord="";

   

 

  public static boolean isUpperCase(String s)

  {

    for (int i=0; i<s.length(); i++)

    {

      if (Character.isLowerCase(s.charAt(i)))

      {

        return false;

      }

      if(Character.isDigit(s.charAt(i)))

      {

      return false;

      }

    }

    return true;

  }

   

  public static String getFirstUpperCaseWord(String address) {

   words=address.split(" ");

   for(int i=0;i<words.length;i++){

 

   currentWord=words[i];

  // System.out.println(currentWord);

 

 if(isUpperCase(currentWord)==true){

 break;

 }

 

 }

   return currentWord;

  }

   

}

 

My idea is to split the string based on the position of the first word which has all upper case character. I call the user routine on tMap and add two new columns, address1 and address2.

set the expression of address1 as:

row1.address.substring(0, row1.address.indexOf(myroutine.getFirstUpperCaseWord(row1.address)))

set the expression of address2 as:

row1.address.substring(row1.address.indexOf(myroutine.getFirstUpperCaseWord(row1.address)))

 

Hope it helps!

 

Regards

Shong