One Star

[resolved] String index out of range error

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
1 ACCEPTED SOLUTION

Accepted Solutions
One Star

Re: [resolved] String index out of range error

Hi
Sorry my mistake
row4.house_no.trim().length()<40 ?row4.house_no.trim() : row4.house_no.trim().substring(0,39)
11 REPLIES
Seven Stars

Re: [resolved] String index out of range error

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.)
One Star

Re: [resolved] String index out of range error

Hi,
Thanks for your answer, i will try as soon as possible
Best Regards
Bahadir
One Star

Re: [resolved] String index out of range error

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
One Star

Re: [resolved] String index out of range error

Hi
row4.house_no.trim().length()>40 ?"" : row4.house_no.trim().substring(0,39)
One Star

Re: [resolved] String index out of range error

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
One Star

Re: [resolved] String index out of range error

Hi
Sorry my mistake
row4.house_no.trim().length()<40 ?row4.house_no.trim() : row4.house_no.trim().substring(0,39)
One Star

Re: [resolved] String index out of range error

Hi,
After 158 row i am getting ""Exception in component tMap_14 java.lang.NullPointerException" again! ?
Best Regards
Bahadir
One Star

Re: [resolved] String index out of range error

Hi
Add Relational.ISNULL(row4.house_no)?"":row4.house_no.trim().length()<40 ?row4.house_no.trim() : row4.house_no.trim().substring(0,39)
One Star

Re: [resolved] String index out of range error

Hi,
This one works great, thanks. But can you explain how does it work, i could not figure out?
Best Regards
Bahadir
One Star

Re: [resolved] String index out of range error

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.
One Star

Re: [resolved] String index out of range error

Hi,
Thank you for your answer, it helps very much.
Best Regards
Bahadir