C# 分隔字符串成为字符串数组的方法(保留分隔符)

2016-09-04  本文已影响656人  zac057

要求如下:

source string: mmmmmmynameismickeym

separator: m

result string []: {"m", "m", "m", "m", "m", "m", "yna", "m", "eis", "m", "ickey", "m"}

思路分析:

1 判断 source string 是否包含 separator

1.1 若不包含,则将其包装为 string 数组返回

1.2 若包含,则进行下列操作

2 将 source string 转换为 char 数组

3 对数组每个字符依次进行检测(循环)

3.1 若不为分隔符,则先将内容存入临时 string 变量 temp

3.2 若为分隔符,则检测 temp 是否为空

4 循环体外,检查 temp 变量是否为 null

代码:

// 需要引入命名空间
// using System;
// using System.Linq;

static string[] splitString(string source_str, char separator)

{

//1. 判断 source string 是否包含 separator

//1.1 string 中不包括分隔符

if (source_str.IndexOf(separator) == -1)

{

//为了返回原字符串,将其包成一个只有一项的string数组返回

string[] source_str_pack = new string[1];//试一试string[source_str]

source_str_pack[0] = source_str;

return source_str_pack;

}

//1.2 string 中包括分隔符

else

{

//2. 将 source_str 转换为 char 数组

char[] source = source_str.ToCharArray();

string temp = null;

int resultID = 0;

string[] result = new string[source.Length];//这样的结果会有大量的 null 元素,后面在返回结果前,进行处理去除无用的 null 元素

//3. 对数组每个字符依次进行检测

for (int i = 0; i < source.Length; i++)

{

//3.1 若不为分隔符,则先将内容存入临时 string 变量 temp

if (source[i].Equals(separator) == false)

{

if (temp == null)

{

temp = "";

}

temp = temp.Insert(temp.Length, source[i].ToString());

}

//3.2 若为分隔符,则检测 temp 是否为空

else

{

//temp不为空,先将 temp 变量的值写入 result 数组

if (temp != null)

{

result[resultID] = temp;

resultID++;

temp = null;

}

//将分隔符写入 result 数组

result[resultID] = source[i].ToString();

resultID++;

}

}

//4. 检查 temp 变量是否为 null

//若不为空,先将其写入 result 数组

if (temp != null)

{

result[resultID] = temp;

resultID++;

temp = null;

}

//返回 string 数组 result

//后面在返回结果前,进行处理去除无用的 null 元素

result = result.Where(s => !String.IsNullOrEmpty(s)).ToArray();

return result;

}

}

上一篇下一篇

猜你喜欢

热点阅读