C/C++中substr函數的應用(簡單講解)


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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM