博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反转古诗
阅读量:4963 次
发布时间:2019-06-12

本文共 3521 字,大约阅读时间需要 11 分钟。

class Program    {        static void Main(string[] args)        {            string input = "白日依山尽,黄河入海流。欲穷千里目,更上一层楼。";            IStringInverter inverter1 = new StringInverter1();            string str1 = inverter1.PiecewiseInvert(input);            Console.WriteLine(str1);            IStringInverter inverter2 = new StringInverter2();            string str2 = inverter2.PiecewiseInvert(input);            Console.WriteLine(str2);            Console.Read();        }    }    ///     /// 根据标点符号反转    ///     class StringInverter1 : IStringInverter    {        #region IStringInverter 成员        public string PiecewiseInvert(string input)        {            StringBuilder sb = new StringBuilder();            int spindex = input.IndexOf('。');            for (int i = 0; i < input.Length; i++)            {                if (spindex > -1)                {                    if (input[i] != '。')                    {                        sb.Append(input[spindex - i - 1]);                    }                    else                    {                        i -= (spindex + 1);                        input = input.Remove(0, spindex + 1);                        spindex = input.IndexOf('。');                        sb.Append('。');                    }                }                else                {                    sb.Append(input[input.Length - i - 1]);                }//每句反转                         }            string[] two = sb.ToString().Split('。', ',');            if (two.Length > 3)                return two[1] + "," + two[0] + "。" + two[3] + "," + two[2] + "。";            else                throw new ArgumentException("此方法只能处理**,**。的语句");        }        #endregion    }    ///     /// 利用正则,3种方法反转字符串    ///     class StringInverter2 : IStringInverter    {        #region IStringInverter 成员        public string PiecewiseInvert(string input)        {            Regex punctuationReg = new Regex(@"[,。]");            MatchCollection matchs = punctuationReg.Matches(input);            StringBuilder sb = new StringBuilder();            for (int i = 0; i < matchs.Count; i++)//匹配出有多少段            {                int index = input.IndexOf(matchs[i].Value);                string section = input.Remove(index);                input = input.Remove(0, index + 1);                #region  遍历一半,利用临时变量                var tempchars = section.ToCharArray();                int templen = tempchars.Length;                for (int c = 0; c < templen / 2; c++)                {                    char temp = tempchars[c];                    tempchars[c] = tempchars[templen - c - 1];                    tempchars[templen - c - 1] = temp;                }                section = string.Join("", tempchars);                sb.Append(section);                #endregion                #region 遍历一遍                //for (int c = 0; c < section.Length; c++)                //{                //    sb.Append(section[section.Length - c - 1]);//反转每句                //}                #endregion                #region array的静态方法反转                //var chars = section.ToCharArray();                //Array.Reverse(chars);                //section = string.Join("", chars);                //sb.Append(section);                #endregion                sb.Append(matchs[i].Value);//加上标点            }            return sb.ToString();        }        #endregion    }    interface IStringInverter    {        string PiecewiseInvert(string input);    }

  

转载于:https://www.cnblogs.com/smailxiaobai/p/3674195.html

你可能感兴趣的文章
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
scanf和gets
查看>>
highcharts 图表实例
查看>>
ubuntu下如何查看用户登录及系统授权相关信息
查看>>
秋季学期学习总结
查看>>
SpringBoot 优化内嵌的Tomcat
查看>>
【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
PL/SQL Developer 查询的数据有乱码或者where 字段名=字段值 查不出来数据
查看>>
宏定义
查看>>
ubuntu12.04 串口登录系统配置
查看>>
笔记:git基本操作
查看>>