字符串的切割操作(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的同一时候操作,就会指针错乱了,得不到想到的切割结果。
相相应的有线程安全的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)的更多相关文章
- python+selenium之字符串切割操作
python+selenium之字符串切割操作 在Python中自带的一个切割方法split(),这个方法不带参数,就默认按照空格去切割字段,如果带参数,就按照参数去切割. 新建一个python文件, ...
- c/c++ 常见字符串处理函数总结 strlen/sizeof strcpy/memcpy/strncpy strcat/strncat strcmp/strncmp sprintf/sscanf strtok/split/getline atoi/atof/atol
这里总结工作中经常用到的一些c/c++的字符串处理方法,标黑的是使用频率较高的 1.strlen函数:计算目标字符串长度, 格式:strlen(字符指针指向区域) 注意1:①不包含字符串结束 ...
- JS对于字符串的切割截取
对于字符串的切割截取平时所用可能不是特别多,而且分的比较细,所以自备自查.有备无患. 由于之前所有均在一个demo测试,若是哪里打错了,敬请谅解.一些其余属性找时间继续添加. 1.函数:split() ...
- C对字符串的部分操作
字符串分割(C++) 经常碰到字符串分割的问题,这里总结下,也方便我以后使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char ...
- Python第一天——入门Python(2)字符串的简单操作
数据的操作 字符串的一些常用操作: 1 1 #!/usr/bin/env python 2 # #coding=utf-8 3 # 4 # test='hello world' 5 # print(t ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
- Js 字符串的三大操作
回顾: var num = str.length:字符个数 str = str.toLowerCase()/toUpperCase() var char = str.charAt(index) :指 ...
- Python字符串的简单操作
数据的操作 字符串的一些常用操作: 1 1 #!/usr/bin/env python 2 # #coding=utf-8 3 # 4 # test='hello world' 5 # print(t ...
- Python_003(字符串的神操作)
一.编码问题 1.编码:计算机最早是ACSII码,美国人创造的,包含了英文字母(大写字母,小写字母)数字,标点等特殊符号; :共有7位0和1组成,表示128个ACSII码,但是计算机对7这个数字不敏感 ...
随机推荐
- JavaScript Json与Map互转以及Map对象的取值方式
Json格式(Json字符串) : var json='{"name": "lily","age":"15"}' Map ...
- centos源码编译安装nginx过程记录
前言:Centos系统编译安装LNMP环境是每来一台新服务器或换电脑都需要做的事情.这里仅做一个记录.给初学者一个参考! 一.安装前的环境 这里用的是centos 7系统. 我们默认把下载的软件放在 ...
- 全3D模具设计自动化解決方案
- STA之Concepts (1)
Static Timing Analysis is one of the many techniques available to verify the timing of a digital des ...
- FusionCharts之我用
fusioncharts:(此控件需flash支持) 介绍:http://baike.baidu.com/link?url=SOheR7sQlb93S5TqYmeI7FhtJ0V9ABNwH6OsAa ...
- Java———较大二进制文件的读、写
由于项目需要,需要对二进制文件进行读写.转换. 文件说明:由其他程序得到的二进制文件,文件内容为:包含23543个三角形.13270个顶点的三角网所对应的721组流速矢量(u.v)文件,通俗些说,一条 ...
- Linux下ifconfig不显示ip地址问题总结
问题一:ifconfig之后只显示lo,没有看到eth0 ? eth0设置不正确,导致无法正常启动,修改eth0配置文件就好 ubuntu 12.04的网络设置文件是/etc/network/inte ...
- 前端请求操作类型(get post put delete)
get:获取数据 post:增加 put:修改 delete:删除
- 禁止foreach循环使用remove/add----快速失败
阿里巴巴开发手册中有一条: 7[强制]不要在 foreach 循环里进行元素的 remove / add 操作. remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterato ...
- CSS 类名的问题
以下以数字开头的 CSS 类名不会生效: .1st{ color: red; } 一个合法的 CSS 类名必需以下面其中之一作为开头: 下划线 _ 短横线 - 字母 a-z 然后紧跟其他 _,- 数字 ...