首页 > 代码库 > 字符串的切割操作(strtok,split)
字符串的切割操作(strtok,split)
一:strtok
C/C++:char *strtok(char s[], const char *delim);
s 代表须要切割的字符串,delim代表切割的标志,參数都为比选!返回指向切割部分的指针,假设没有切割成功就返回NULL.
一个简单的样例:
void main() { char *str = "jscese test strtok"; char *delim = " "; char *pstr = NULL; pstr = strtok(str, delim); printf("the first str==%s \n", pstr); while ((pstr = strtok(NULL, delim)) != NULL) { printf("the next str==%s \n", pstr); } }
以上看出第一次之后 切割之后,假设还要继续传的參数就是NULL。由于strtok是把切割的标志位置设置成了/0
切割完之后的字符串: jscese/0test/0strtok
所以往后的开头指针的位置都是/0处。所以传NULL。
以上结果为:
the first str==jscese the next str==test the next str==strtok
由于它在处理切割一个字符串的时候,保存移动位置的指针变量是一个静态变量。
这种话,在同一个字符串的处理中。假设有多个strtok的同一时候操作,就会指针错乱了,得不到想到的切割结果。
相相应的有线程安全的strtok_r函数。
二:split
java:stringObj.split([separator,[limit]]);
stringObj 指须要切割的字符串实体.
separator 切割的标志.
limit 代表返回的元素个数,为可选參数。
返回一个字符串数组.
简单样例:
public void split() { String testString = "jscese.test.split"; String[] splitarray1 = testString.split("\\."); for (int i = 0; i < splitarray1.length; i++) { System.out.println(splitarray1[i]); } String[] splitarray2 = testString.split("\\.", 2); for (int i = 0; i < splitarray2.length; i++) { System.out.println(splitarray2[i]); } }
以上以 "."为切割符,可是为特殊字符须要转义 全部在前面须要加 "\\"
java中 像 + * | \ .等都须要加转义。
以上执行结果:
jscese
test
split
jscese
test.splilt
撰写不易。转载请注明出处:http://blog.csdn.net/jscese/article/details/26447589
字符串的切割操作(strtok,split)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。