C#面向对象基础之String类的练习

练习一

  • 有⼀个GET⽹络请求中,⽹络连接(url字符串)通常是如下形式:
    http://msdn.microsoft.com/zh-CN/?query=string
    其中? 后⾯表示参数。上⾯的例⼦中,参数名为query的参数值为string
    (1).判断⼀个字符串是否是合法的url字符串(以http://或https://开头)
    (2).判断⽹络连接中是否包含参数(提示:通过是否有?判断)
    (3).封装⼀个⽅法,输⼊url字符串,返回其参数名和参数值
这道练习是要我们建立一个工具类,实现三个方法完成上面的功能
第一个要求中,我们可以通过String中的StratWith()方法轻松完成
第二个要求可以通过String类中的Contains()方法轻松完成
第三个要求可以通过String类的Substring()、IndexOf()、Split()这三个方法完成

具体用法自己去查msdn上提供的API

下面是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace aHomeWork
{

    #region 
    /// <summary>
    /// URL工具类
    /// </summary>
    class URLTools
    {
        /// <summary>
        /// 判断URL是否合法
        /// </summary>
        /// <param name="URL">要判断的URL</param>
        /// <returns>合法返回真</returns>
        public bool LegalURL(string URL)
        {
            if (URL.StartsWith("http://") || URL.StartsWith("https://"))
            {
                return true;
            }

            return false;
        }

        /// <summary>
        /// 判断URL是否包含参数
        /// </summary>
        /// <param name="URL">要判断的URL</param>
        /// <returns>包含返回真</returns>
        public bool ContainsParams(string URL)
        {
            return URL.Contains("?");
        }

        /// <summary>
        /// 提取参数并返回
        /// </summary>
        /// <param name="URL"></param>
        /// <returns></returns>
        public string[] ExtractionParams(string URL)
        {
            if (!this.LegalURL(URL))
            {
                Console.WriteLine("输入的URL不合法!");
                return null;
            }
            else if (!this.ContainsParams(URL))
            {
                Console.WriteLine("输入的URL没有参数!");
                return null;
            }

            string paraUrl = URL.Substring(URL.IndexOf('?') + 1);

            string[] parameters = paraUrl.Split(new char[] { '&' });

            return parameters;
        }

    }


    #endregion
    class Program
    {
        static void Main(string[] args)
        {
        	//实例化工具
            URLTools tools = new URLTools();

            string testURL01 = "http://www.baidu.com?name=yuexiang&age=18";

            string testURL02 = "asdasd1231231";
            
			//调用工具中方法判断URL是否合法
            string testURL03 = "https://www.baidu.com";

            if (tools.LegalURL(testURL03))
            {
                Console.WriteLine($"合法的URL");
            }
            else
            {
                Console.WriteLine("输入的URL不合法!");
            }

			//定义数组接收返回的参数字符串
            string[] parameters = tools.ExtractionParams(testURL03);

            if (parameters != null)
            {
                int count = 1;
                foreach (var item in parameters)
                {
                    string[] str = item.Split(new char[] { '='});

                    Console.WriteLine($"第{count}个参数:参数名:{str[0]},参数值:{str[1]};");
                    count++;
                }
            }
        }
    }
}

练习二

  • 输⼊⼀个英⽂句⼦,翻转句⼦中单词的顺序,但单词内字符的顺序不变。
    句⼦中单词以空格符隔开。为简单操作,不要输⼊标点符号。
    例如输⼊“I am a student”,则输出“student a am I”。
这道题比上一道复杂些,不过也只需要了解一个String类的Concat()方法即可。

具体使用方式参见msdn提供的API

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace bMathTool
{
    #region 
        /// <summary>
        /// 字符串工具类
        /// </summary>
        class StringTools
    {

        /// <summary>
        /// 反转字符串方法
        /// </summary>
        /// <param name="str">要反转的字符串</param>
        /// <returns>返回反转过的字符串</returns>
        public string ReverseStr(string str)
        {
            if (str != null)
            {
            	//定义数组保存分割后但还未反转的字符数组
                string[] beforeReverse = str.Split(new char[] { ' '});
				//定义字符串变量用来保存反转后拼接好的字符串,初值赋null
                string afterReverse = null;

				//以下for循环是反转拼接操作
                for (int i = beforeReverse.Length - 1; i >= 0; i--)
                {
                    if (i == beforeReverse.Length - 1)
                    {
                        afterReverse = string.Concat(afterReverse, beforeReverse[i]);
                    }
                    else
                    {
                        beforeReverse[i] = " " + beforeReverse[i].Trim();
                        afterReverse = string.Concat(afterReverse, beforeReverse[i]);
                    }
                }

                return afterReverse;
            }
            else
            {
                return str;
            }

        }
    }

    #endregion

    class Program
    {
        static void Main(string[] args)
        {
			//实例化工具
            StringTools tools = new StringTools();

            string testStr01 = "i am a student";

			//调用反转方法
            string afterReverse = tools.ReverseStr(testStr01);

            Console.WriteLine(afterReverse);
            
        }

    }
}

有疑问的可以私信博主。
点个关注,给个赞呗!

发布了30 篇原创文章 · 获赞 12 · 访问量 3663

猜你喜欢

转载自blog.csdn.net/maybe_ice/article/details/104416717