zoukankan      html  css  js  c++  java
  • C#Split()处理字符串,错误的将U.S 或者 2.5hours分成两段的问题

    主要思路: 注:warehouse 为字符串数组,newstxt为要处理字符串

    1. 用C#中字符串的split()方法,以“.”为标志,将字符串切分成n段字符串放到warehouse字符串数组中。
    2. split()方法会错误的将形如U.S或者2.5hours的分到两个数组中
    3. 这样的两个数组有一个规律,前者数组的末尾字符是数字或者大写字母,后者的开头字符对应的是数字或者大写字母。
    4. 如果遇到着这种情况,就将两个数组合并成一个字符串,存放到前者字符串中,后者字符串由后面的字符串覆盖,以此类推,一直遍历到最后一个数组把倒数第二个数组的字符串给覆盖,数组长度减一。
    string[] warehouse = newstxt.Split('.');
                    Boolean markItNumber = false;
                    Boolean markItLetter = false;
                    StringBuilder sb = new StringBuilder();
                    int count1 = 0;
                    int mark = -1;
                    int para_len = warehouse.Length;
                    Console.WriteLine("
    
    
    ******************调试台******************");
                    //对特殊情况进行处理 例如U.S 1.5hours
                    char c = '0';
                                             for (int o = 0; o < para_len; o++)
                                {
                                    Console.WriteLine("开头字母"+ warehouse[o][0]+"结尾字母"+ warehouse[o][warehouse[o].Length-1]+
                                        "markItLetter" + markItLetter+ "markItNumber"+ markItNumber);
                                    if (warehouse[o].Length > 0)
                                    {
                                        //如果开头是大写字母,那么检查上一句是否是大写字母结尾,如果是,那么把两句合并成一句
                                        if (warehouse[o][0] >= 'A' && warehouse[o][0] <= 'Z')
                                        {
                                            if (markItLetter)//上一句是大写字母结尾
                                            {
                                                Console.WriteLine("Last End:" + c + " Now Begin:" + warehouse[o][0]);
                                                warehouse[mark] = warehouse[mark] + "." + warehouse[o];
                                                //将两个字符串合并,数组长度减1
                                                for (int k = mark + 1; k < para_len - 1; k++)
                                                {
                                                    warehouse[k] = warehouse[k + 1];
                                                }
                                                para_len--;
                                                --o;
                                                // 重新从最新合并的字符串开始处理
                                            }
                                            markItLetter = false;
    
                                        }
                                        else if (warehouse[o][0] >= '0' && warehouse[o][0] <= '9')
                                        {
                                            if (markItNumber) //上一句是数字结尾
                                            {
                                                Console.WriteLine("Last End:" + c + " Now Begin:" + warehouse[o][0]);
                                                warehouse[mark] = warehouse[mark] + "." + warehouse[o];
                                                //将两个字符串合并,数组长度减1
                                                for (int k = mark + 1; k < para_len - 1; k++)
                                                {
                                                    warehouse[k] = warehouse[k + 1];
                                                }
                                                para_len--;
                                                --o;
                                            }
                                            markItNumber = false;
    
                                        }
                                         if(warehouse[o][warehouse[o].Length-1]>='A' && warehouse[o][warehouse[o].Length - 1] <= 'Z')
                                        {
                                            markItLetter = true;
                                            mark = o;
                                            c = warehouse[o][warehouse[o].Length - 1];
                                            Console.WriteLine("Last End:" + c );
                                        }
                                        else if(warehouse[o][warehouse[o].Length - 1]>='0' && warehouse[o][warehouse[o].Length - 1] <= '9')
                                        {
                                            
                                            markItNumber = true;
                                            mark = o;
                                            c = warehouse[o][warehouse[o].Length - 1];
                                            Console.WriteLine("Last End:" + c);
                                        }
                                       
                                       
                                    }
                                }
                                len = para_len;
                                                Console.WriteLine("
    
    
    ******************调试结束******************");
    
  • 相关阅读:
    [转] Actor生命周期理解
    [转] Linux History(历史)命令用法 15 例
    [转] CDH6 安装文章链接收集
    [转] org.scalatest.FunSuite Scala Examples
    [转] Mock以及Mockito的使用
    关于 maven 打包直接运行的 fat jar (uber jar) 时需要包含本地文件系统第三方 jar 文件的问题
    [转] flume使用(六):后台启动及日志查看
    [转] etcd 搭建与使用
    [转] 2018年最新桌面CPU性能排行天梯图(含至强处理器)
    让 Linux grep 的输出不换行
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781605.html
Copyright © 2011-2022 走看看