C++ 分割字符串

C++ 分割字符串,第1张

代码:#ifdef UNICODE

#define TCHAR unsigned short

#else

#define TCHAR char

#endif#include <iostream>

using namespace std;void main()

{

TCHAR data = "101,120,165,38,92,47,693,32";

cout<<"Data: "<<data<<endl; int len = strlen(data);

int num = 0; //获取串中整数个数

int i;

for(i=0; i<len; i++)

{

if(',' == data[i])//逗号个数+1即为整数个数

{

num++;

}

}

num += 1; int ret = new int[num];//动态分配num个空间用于存储各整数

int order = 0;//用于保存动态数组当前需要存储的下标 //解析各整数

char tmp[16] = {0};//临时字符用于存储每一个整数的各位

int j = 0;

for(i=0; i<len; i++)

{

if(',' != data[i])

{

tmp[j++] = data[i];//将一个整数的各位存入临时字符

}

else

{

ret[order++] = atoi(tmp);//遇到逗号表示该整数完成,将其转换后存到动态分配的数组中

memset(tmp, 0, 16);//清空临时字符串

j = 0;

}

if(i+1 == len)//到达原字符串尾部直接将临时字符串转换成整数并存储

{

ret[order++] = atoi(tmp);

}

} //输出各整数

for(i=0; i<num; i++)

{

cout<<ret[i]<<endl;

} //释放资源

delete[] ret;

}

这个c表示字符常量,这里和split没有什么关系。

VB中,一个长度为1的字符串字面量后面带上c,就表示这个不是字符串,而是一个字符。

字符串是任意多个字符组成的一个串,可以是0个,也可以是100个;而字符只能是1个,不多不少。

如果您学过C语言、Java等,就会知道,在这些区分字符串和字符的语言中,用双引号表示字符串,而单引号表示字符。例如 "a" 是一个字符串(C里其实是字符数组常量),而 'a' 表示这是一个字符,字符串和字符在内存中和用法上,都是不同的,而双引号和单引号又很好理解。

然而VB这个语言从一出生,就注定它不能用单双引号来区分,因为它的单引号是注释标记。而net是一个类型严格的平台,C#/J#/C++net都使用同一套API,所以在很多地方是区分字符的,例如这个split函数的第一个参数,需要传一个字符进来。

在VB中获取字符常用的有三种方式:

方法1:

dim a as char = "a"c

长度为1的字符串,后面加上c,就表示是一个字符(Char),这是字符字面量的表达方式。

方法2:

dim a as Char = Charparse("a")

通过类型解析函数来获取一个Char,同样只能传入长度为1的字符串

方法3:

dim a as Char = "a"Chars(0)

dim b as Char = "abc"Chars(1)

这种方法就是将字符串先转换为Char数组,然后在数组中获取第i位字符

小知识:VB的最早版本,还没有net的时候,是不区分字符串和字符的,这和大部分脚本型语言都是一样的

#include <stdioh>

#include <stringh>

// 将str字符以spl分割,存于dst中,并返回子字符串数量

int split(char dst[][80], char str, const char spl)

{

    int n = 0;

    char result = NULL;

    result = strtok(str, spl);

    while( result != NULL )

    {

        strcpy(dst[n++], result);

        result = strtok(NULL, spl);

    }

    return n;

}

int main()

{

    char str[] = "what is you name";

    char dst[10][80];

    int cnt = split(dst, str, " ");

    for (int i = 0; i < cnt; i++)

        puts(dst[i]);

    return 0;

}

substring讲解:

s=ssubstring(int begin);截取掉s从首字母起长度为begin的字符串,将剩余字符串赋值给s;

s=ssubstring(int begin,int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;

split讲解:

javalangstringsplit

split 方法

将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObjsplit([separator,[limit]])

参数

stringObj 

必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator 

可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽

略该选项,返回包含整个字符串的单一元素数组。 

limit

可选项。该值用来限制返回数组中的元素个数。

说明

split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解

。separator 不作为任何数组元素的部分返回。

split 的实现直接调用的 matcher 类的 split 的方法。“ ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

Java代码

public static void main(string[] args) {

string value = "19216812833";

string[] names = valuesplit("\\");

for (int i = 0; i < nameslength; i++) {

systemoutprintln(names[i]);

}}

如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“\\|”

java分割字符串用split,例如

String sourceStr = "1,2,3,4,5";String[] sourceStrArray = sourceStrsplit(",");for (int i = 0; i < sourceStrArraylength; i++) { Systemoutprintln(sourceStrArray[i]);}

split分隔符总结

1字符"|","","+"都得加上转义字符,前面加上"\\"。2而如果是"\",那么就得写成"\\\\"。3如果一个字符串中有多个分隔符,可以用"|"作为连字符。

比如:String str = "Java string-split#test",可以用Strsplit(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。

将String切割的方法如下:

1、用竖线 | 分隔字符串,

String[] aa ="aaa|bbb|ccc"split("|");

//String[] aa = "aaa|bbb|ccc"split("\\|"); 这样才能得到正确的结果

for(int i =0; i <aalength ; i++){

Systemoutprintln("--"+aa);

}

2、用竖 分隔字符串运行

String[] aa ="aaabbbccc"split("");

//String[] aa = "aaa|bbb|ccc"split("\\"); 这样才能得到正确的结果

for(int i =0; i <aalength ; i++){

Systemoutprintln("--"+aa);

字符串分割的话,字符串必须有特定的格式或者规律,之后就可以通过正则表达式进行分割了。

举例:

public

class

Test1

{

public

static

void

main(String

args[]){

String

str="TOM:89|JERRY:90|TONY:78";

String

s1[]=strsplit("\\|");//这句话的意思是说

|

拆分字符串,得到一个数组,数组的内容是{TOM:89,JERRY:90,TONY:78}也就是说

s1[0]

=

TOM:89,S1[1]=JERRY:90,S1[2]=

TONY:78

for(int

x=0;x<s1length;x++){

//

这句话的意思是说:把数组

s1

循环输出

得到

我上面说的那三个值;

String

s2[]=s1[x]split(":");

//这句话的意思是

把s1的三个值(也就是上面的三个值,在按

:

拆分)

得到

最后的结果

Systemoutprintln(s2[0]+"---->"+s2[1]);

}

}

}

1、首先在shell中,定义一个字符串变量,例:str='bbc123uu789'。

2、使用echo输出变量$str的值,例:#注释:shell中定义变量不需要使用$符号,使用变量的时候需要使用$符号echo $str。

3、使用sed指令,对变量进行处理,例:echo $str|sed 's//&\+/g'#注释:sed是文本流的处理指令,不会对原文件的内容造成破坏,同时sed支持正则表达式,所以使用起来特别强大#经过以上简单处理之后,字符之间被+符号分隔开来了。

4、sed指令本身并不会原文本造成破坏,所以,再次输出变量$str,值并未改变。

5、使用空格对字符进行分隔,只需要指定sed语法种的符号即可,例:echo $str|sed 's//& /g'#注释:掌握了这个,想使用什么符号分隔都可以,在&符号后指定就可以了。

6、扩展一下,按照三个字符一组,对字符串进行分隔,例:echo $str|sed 's//& /g'。

以上就是关于C++ 分割字符串全部的内容,包括:C++ 分割字符串、vb 中字符切割 .split(""c) 这个括号中的 c 作用是什么、C语言中字符切割函数split的实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9709842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存