zoukankan      html  css  js  c++  java
  • 切分文本行

    /// <summary>
            /// 切分文本行
            /// </summary>
            /// <param name="src">源内容</param>
            /// <param name="separators">分隔符</param>
            /// <param name="quotes">引号对</param>
            /// <returns></returns>
            public string[] cutTextLine(string src, string[] separators, string[][] quotes)
            {
                if (src == null || src.Equals("")) { return new string[0]; }
                ArrayList als = new ArrayList();
                int point = 0;
                while (point < src.Length)
                {
                    while (point < src.Length && src.Substring(point, 1).Equals(" ")) { point++; }  // 过滤前空
                    int q_point = -1;    // 引号位
                    for (int i = 0; i < quotes.Length; i++)
                    {                    // 以左引号打头
                        if (point + quotes[i][0].Length <= src.Length && quotes[i][0].Equals(src.Substring(point, quotes[i][0].Length)))
                        {
                            q_point = i;
                            break;
                        }
                    }
                    if (q_point < 0)   // 非引号打头
                    {
                        int k = point;
                        int s_point = -1;    // 分隔符位
                        while (k < src.Length && s_point < 0)
                        {
                            for (int i = 0; i < separators.Length; i++)            // 找分隔符
                            {
                                if (k + separators[i].Length <= src.Length && separators[i].Equals(src.Substring(k, separators[i].Length)))
                                {
                                    s_point = i;
                                    break;
                                }
                            }
                            if (s_point < 0) { k++; }
                        }
                        string s = (point < k ? src.Substring(point, k - point) : "");
                        als.Add(s);
                        point = (s_point < 0 ? k : k + separators[s_point].Length);
                    }
                    else
                    {
                        point += quotes[q_point][0].Length;
                        int k = src.IndexOf(quotes[q_point][1], point);
                        if (k < 0 || k >= src.Length)     // 没找到后续右引号
                        {
                            string s = src.Substring(point);
                            als.Add(s);
                            point = src.Length;
                        }
                        else
                        {
                            string s = src.Substring(point, k - point);
                            als.Add(s);
                            point = k + quotes[q_point][1].Length;
                        }
                        while (point < src.Length && src.Substring(point, 1).Equals(" ")) { point++; }  // 过滤后空
                        for (int i = 0; i < separators.Length; i++)           // 跳过分隔符
                        {
                            if (point + separators[i].Length <= src.Length && separators[i].Equals(src.Substring(point, separators[i].Length)))
                            {
                                point += separators[i].Length;
                                break;
                            }
                        }
                    }
                }
                string[] ss = new string[als.Count];
                for (int i = 0; i < als.Count; i++) { ss[i] = (string)als[i]; }
                als.Clear();
                return ss;
            }
  • 相关阅读:
    JWT验证
    SQLite报错: no such column:StamoRule(表名)
    .Net Core 程序报错 在上一个操作完成之前,在此上下文上启动了第二个操作。
    接口请求报错 504 Gateway Time-out
    未处理的异常:system.io.file load exception:无法加载文件或程序集“ 。。。。 找到的程序集的清单定义与程序集引用不匹配。
    好多年没回到这个园子
    模拟webpack 实现自己的打包工具
    微信小程序迁移到头条小程序工具
    手机端图片懒加载
    react系列一,react虚拟dom如何转成真实的dom
  • 原文地址:https://www.cnblogs.com/xsmhero/p/1951804.html
Copyright © 2011-2022 走看看