Hi all; I am trying to read data from xml file and write them to Mysql db. In my db House_no field's data type is String(40). In xml file there are some house no values that longer than 40 and i want to cut all the values that are greater than 40. so i try the code below in tMap but i got "java.lang.StringIndexOutOfBoundsException: String index out of range: 40 at java.lang.String.substring(Unknown Source)" error? row4.house_no.length()>40 ?"" : row4.house_no.substring(0,40) Do you have any idea what cause this error, or a better way to take 0-40 character without using tJavaRow. Best Regards Bahadir
substring throws that error if the String length if less than 40 because it tries to get 40 characters. Instead use StringHandling.LEFT(row4.house_no,40) on its own. (Also, your expression is actually setting the house_no to blank if it's longer than 40 characters.)
Hi again, I have tried your suggestion as, StringHandling.LEFT(row4.house_no,40) but i am getting "Exception in component tMap_14 java.lang.NullPointerException at routines.StringHandling.LEFT(StringHandling.java:184)" error. Do you have any idea to solve this issue? Best Regards Bahadir
Hi, Thanks for you answer, i have tried as you wrote and i got "Exception in component tMap_14 java.lang.StringIndexOutOfBoundsException: String index out of range: 39 at java.lang.String.substring(Unknown Source)" error? Best Regards Bahadir
Hi It will first check row4.house_no is null or not, if null then it will assign blank values If not null, it will check the legth of the house_no, if less than 40 no change else row4.house_no= row4.house_no.trim().substring(0,39) //take only the first 40 characters as in java the numbering starts from 0 so the max should be 39 hope it clarifies you.