C语言中字符切割函数split的实现

Python033

C语言中字符切割函数split的实现,第1张

#include <stdio.h>

#include <string.h>

// 将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

}

c中split的用法你知道吗?下面我就跟你们详细介绍下c中split的用法,希望对你们有用。

c中split的用法如下:

1、用字符串分隔:

using System.Text.RegularExpressions

string str="aaajsbbbjsccc"

string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase)

foreach (string i in sArray) Response.Write(i.ToString() + "<br>")

输出结果:

aaa

bbb

ccc

2、用多个字符来分隔:

string str="aaajbbbscccjdddseee"

string[] sArray=str.Split(new char[2] {'j','s'})

foreach(string i in sArray) Response.Write(i.ToString() + "<br>")

输出结果:

aaa

bbb

ccc

ddd

eee

3、用单个字符来分隔:

string str="aaajbbbjccc"

string[] sArray=str.Split('j')

foreach(string i in sArray) Response.Write(i.ToString() + "<br>")

输出结果:

aaa

bbb

ccc

////////////////////////////////////////////////

string[] arr = str.Split("o")

这是一个具有语法错误的语句,Split 的 separator 参数应该是 char[] 或 string[],不应是字符串。正确的示例:

string str = "technology"

char[] separator = { 'o' }

string[] arr = str.Split(separator)

////////////////////////////////////////////////////

String.Split 方法有6个重载函数:

程序代码

1) public string[] Split(params char[] separator)

2) public string[] Split(char[] separator, int count)

3) public string[] Split(char[] separator, StringSplitOptions options)

4) public string[] Split(string[] separator, StringSplitOptions options)

5) public string[] Split(char[] separator, int count, StringSplitOptions options)

6) public string[] Split(string[] separator, int count, StringSplitOptions options)

下边我们通过一些实例来说明下怎么使用(以下string words = "1,2.3,,4"):

1. public string[] Split(params char[] separator)

程序代码

string[] split = words.Split(new Char[] { ',' })//返回:{"1","2.3","","4"}

string[] split = words.Split(new Char[] { ',', '.' })//返回:{"1","2","3","","4"}

2. public string[] Split(char[] separator, int count)

程序代码

string[] split = words.Split(new Char[] { ',', '.' }, 2)//返回:{"1","2.3,,4"}

string[] split = words.Split(new Char[] { ',', '.' }, 6)//返回:{"1","2","3","","4"}

3. public string[] Split(char[] separator, StringSplitOptions options)

程序代码

string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.RemoveEmptyEntries)//返回:{"1","2","3","4"} 不保留空元素

string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None)//返回:{"1","2","3","","4"} 保留空元素

4. public string[] Split(string[] separator, StringSplitOptions options)

程序代码

string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries)//返回:{"1","2","3","4"} 不保留空元素

string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None)//返回:{"1","2","3","","4"} 保留空元素

5. public string[] Split(char[] separator, int count, StringSplitOptions options)

程序代码

string[] split = words.Split(new Char[] { ',', '.' }, 2, StringSplitOptions.RemoveEmptyEntries)//返回:{"1","2.3,,4"} 不保留空元素

string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None)//返回:{"1","2","3","","4"} 保留空元素

6. public string[] Split(string[] separator, int count, StringSplitOptions options)

程序代码

string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries)//返回:{"1","2.3,,4"} 不保留空元素

string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None)//返回:{"1","2","3","","4"} 保留空元素

需要注意的是没有重载函数public string[] Split(string[] separator),所以我们不能像VB.NET那样使用words.Split(","),而只能使用words.Split(',')

Split函数

描述

返回一个下标从零开始的一维数组,它包含指定数目的子字符串。

语法

Split(expression[, delimiter[, count[, compare]]])

Split函数语法有如下几部分:

部分 描述

expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。

delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的expression字符串。

count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。

compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。

设置值

compare参数的设置值如下:

常数 值 描述

vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。

vbBinaryCompare 0 执行二进制比较。

vbTextCompare 1 执行文字比较。

vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。

示例

下面的示例演示如何在字符串的空格处拆分该字符串。

Dim TestString As String = "Look at these!"

' 返回的数组包含 "Look", "at", and "these!".

Dim TestArray() As String = Split(TestString)