inconsistency with built in function subString() function

inconsistency with built in function subString() function

I am trying to generate a part of string which requires subString function. 
For example If I want to extract between  3rd and 5th index for the word Tamilnadu, I have to do the following
x  = "Tamilnadu"
x.substring(2, 5).

a)Since it is based on zero index it should actually be
x.substring(2,4)
b)in the case of indexing starting with 1 it should be
x.substring(3,5)

Isn't it a bit confusing?