練習一
- 有⼀個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);
}
}
}
有疑問的可以私信博主。
點個關注,給個讚唄!