关于截取字符串是开发当中经常会用到的一个小方法,但是因为很多地方索引的0/1之争搞得容易记混淆了。对已知的几个使用记录一下。
- java里的substring()方法
(1)xx.substring(int begin)截取从指定的位置开始到字符最后的内容。
(2)xx.substring(int begin,int end)截取指定的开始索引到结束索引之间的字符内容。(截取的内容包含begin不包含end)
注意点:begin是从0开始的。截取字符的时候截取的是个数。
① 如果start和end的值相等,那么返回的为一个空串。
② 如果设定是begin设定为负数会报错 java.lang.StringIndexOutOfBoundsException: String index out of range: xx
- SQL Server数据库里的substring()方法
(1)SUBSTRING (expression,begin,length )截取从指定的位置开始的length长度的字符。(截取包含begin位置)
注意点:begin是从1开始的。如果将begin设置为0则截取的结果里会比length的设定少一位,相当于截取了length-1的长度,begin允许设定为负值。
- oracle数据库substr()方法
(1)substr( string, begin, [ length ] )截取从指定位置开始,长度为length的字符,长度的设定可以选择。如果length的值不指定的话,截取从begin开始以后的所有内容。
如果为负数则表示从后面往前截取,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
注意点:begin是从1开始的。begin无论是设置为0还是1,截取的时候都会从第一个字符开始截取,这个要和sql server里的substring区分开,允许设定为负数,
- javascript里的substr()方法
(1)xx.substr(start,length) start为抽取字符的起始下标,start的索引从0开始,截取长度为length的字符。
如果为负数则表示从后面往前截取,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
注意点:start的索引是从0开始的,允许设定为负数。
- javascript里的substring()方法
(1)xx.substring(start,end) start为抽取字符的起始下标,start的索引从0开始,其内容是从 start 处到 stop-1 处的所有字符。(包含start不包含end)
注意点:以下三点是比较特别的,需要留意一下。
① 如果start和end的值相等,那么返回的为一个空串。
② 如果start比end大,那么该方法在提取子串之前会先交换这两个参数。
③ 如果start或end为负数,那么它将被替换为0。