美文网首页
C# 分隔字符串成为字符串数组的方法(保留分隔符)

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

作者: zac057 | 来源:发表于2016-09-04 14:41 被阅读656次

    要求如下:

    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 是否为空

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

    • 将分隔符写入 result 数组

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

    • 若不为空,则将其写入 result 数组

    • 返回 string 数组 result

    代码:

    // 需要引入命名空间
    // 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;
    
    }
    
    }
    
    

    相关文章

      网友评论

          本文标题:C# 分隔字符串成为字符串数组的方法(保留分隔符)

          本文链接:https://www.haomeiwen.com/subject/yrmlettx.html