字符串的切割操作(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

时间: 2025-01-07 10:50:29

字符串的切割操作(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, d

Js 字符串的三大操作

回顾: var num = str.length:字符个数 str = str.toLowerCase()/toUpperCase() var char = str.charAt(index)  :指定位置的字符 var code = str.charCodeAt(index):指定位置的字符的unicode编码 字符串三大操作: 1.查找关键字 2.替换关机子 3.获取子字符串 查找关键字:var index = str.indexOf("关键字"); 返回关键字所在位置!****如

C对字符串的部分操作

字符串分割(C++) 经常碰到字符串分割的问题,这里总结下,也方便我以后使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串,delim为分隔符字符串. 返回值:从str开头开始的一个个被分割的串.当没有被分割的串时则返回NULL. 其它:strtok函数线程不安全,可以使用strtok_r替代. 示例: 1 //借助strtok实现split

HTML中JS对于字符串的切割截取实现

在网站编程制作中,对于字符串的切割截取平时所用可能不是特别多,而且分的比较细,所以自备自查.有备无患.由于之前所有均在一个demo测试,下面就来跟大家分享一下成果. 1.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico|png"; arr=str.split("|"); //arr是一个包含字符值"jpg"."bmp"."gif".

字符串的简单操作

字符串 String是类,不是基本数据类型. String对象的创建方法 1. String s=“hello”; 2. String s=new String(“hello”); 3. char chars[]={‘x',‘y',‘z'}; String s1=new String(chars); String s2=new String(chars,0,2); “==”和equals()的区别 ==:判断两个字符串在内存中的地址,即判断是否是同一个字符串对象 equals():检查组成字符串

归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作

在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. 字符串转换 3. 字符测试 4. 文件操作 5. 时间日期 6. 常用数学函数 7. 文件内容操作 8. 文件权限控制 9. 进程操作 10. 线程操作 11. Socket操作 12. 信号处理 13. 数据结构及算法 以下是对第一项 内存及字符串控制及操作 的归纳整理. 已经不赞成使用的函数归类

C#中定义数组--字符串及数组操作

一.一维: int[] numbers = new int[]{1,2,3,4,5,6}; //不定长 int[] numbers = new int[3]{1,2,3};//定长 二.多维 int[,] numbers = new int[,]{{1,2,3},{1,2,3}}; //不定长 int[,] numbers = new int[2,2]{{1,2},{1,2}}; //定长 三.例子 A:int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值; //包

字符串的切割

头文件: Cstring trim(char ch = ' '); std::vector<Cstring> split(const Cstring & strSep,bool needTrim = true); cpp 文件: Cstring Cstring::trim(char ch){    TrimLeft(ch);    TrimRight(ch);    return *this;} std::vector<Cstring> Cstring::split(con

Python 字符串概念和操作

# 字符串概念:由单个字符串组成的一个集合 # 普通字符串(非原始字符串) str = "abc" print(str) # abc # 原始字符串(前面加r) str = r"abc" print(str) # abc # 上面2个字符串区别,普通字符串可以加入转义字符,可以使用%来填坑 str = "ab\tc"; print(str) # ab c # 原始字符串里面的输出按原型打印 str = r"ab\tc"; pr