练习一
- 有⼀个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);
}
}
}
有疑问的可以私信博主。
点个关注,给个赞呗!