substr(字符串,截取開始位置,截取長度) //返回截取的字
substr('Hello World',0,1) //返回結果為 'H' *從字符串第一個字符開始截取長度為1的字符串
substr('Hello World',1,1) //返回結果為 'H' *0和1都是表示截取的開始位置為第一個字符
substr('Hello World',2,4) //返回結果為 'ello'
substr('Hello World',-3,3)//返回結果為 'rld' *負數(-i)表示截取的開始位置為字符串右端向左數第i個字符
測試:
select substr('Hello World',-3,3) value from dual;
附:java中substring(index1,index2)的簡單用法
作用:從字符串索引(下標)為index1的字符開始截取長度為index2-index1 的字符串。
String str="Hello World";
System.out.println(str.substring(0,5));
打印結果為:Hello
下面給段C的代碼詳解,估計就懂了!
1 #include <string.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <assert.h> 5 char* mysubstr(char* srcstr, int offset, int length) 6 { 7 assert(length > 0); 8 assert(srcstr != NULL); 9 10 int total_length = strlen(srcstr);//首先獲取srcstr的長度 11 //判斷srcstr的長度減去需要截取的substr開始位置之后,剩下的長度 12 //是否大於指定的長度length,如果大於,就可以取長度為length的子串 13 //否則就把從開始位置剩下的字符串全部返回。 14 int real_length = ((total_length - offset) >= length ? length : (total_length - offset)) + 1; 15 char *tmp; 16 if (NULL == (tmp=(char*) malloc(real_length * sizeof(char)))) 17 { 18 printf("Memory overflow . \n"); 19 exit(0); 20 } 21 strncpy(tmp, srcstr+offset, real_length - 1); 22 tmp[real_length - 1] = '\0'; 23 return tmp; 24 } 25 int main() 26 { 27 char srcstr[] = "this is a test string!"; 28 char* tmp = mysubstr(srcstr, 8, 8); 29 printf("TEST: result = %s\n", tmp); 30 free(tmp); 31 return 0; 32 }