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);
            
        }

    }
}

有疑問的可以私信博主。
點個關注,給個讚唄!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章