zoukankan      html  css  js  c++  java
  • C# 分隔字符串成为字符串数组的方法(保留分隔符)

    要求如下:

    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;
    
        }
    
    }
    
    
  • 相关阅读:
    截取iOS系统返回事件
    iOS返回到指定界面
    swift 命名,字符串
    移动混合开发之文件管理Final之总结
    移动混合开发之android文件管理新建文件和删除文件
    移动混合开发之文件管理工具栏
    rem ,em ,px的区别
    移动混合开发之android文件管理-->flexbox,webFont。
    移动混合开发之android文件管理demo
    移动混合开发之页面布局
  • 原文地址:https://www.cnblogs.com/hiwangzi/p/6901281.html
Copyright © 2011-2022 走看看