在特定点拆分和追加字符串

时间:2017-09-02 05:37:41

标签: c# winforms api split append

我使用了网络API

SQLite's Limit page

并显示上面的参数

方法输入: 图像LON = 100.75&安培; LAT = 1.5&安培;日期= 2014年2月1日和安培; cloud_score =真&安培; API_KEY = DEMO_KEY

预期产出: 方法名称:图像 参数:lon,lat,date,cloud_score,api_key 值:100.75,1.5,2014-02-01,True,api_key

方法输入: 浏览LON = 100.75&安培; LAT = 1.5&安培;日期= 2014年2月1日

预期产出: 方法名称:浏览 参数:lon,lat,date 值:100.75,1.5,2014-02-01

方法输入: ?LON = 100.75&安培; LAT = 1.5&安培;日期= 2014年2月1日 预期产出:

错误:格式错误的网址

方法输入: 浏览LON = 100.75&安培; LAT = 1.5&安培;日期

预期产出: 错误:格式错误的网址

方法输入: 浏览?

预期产出: 错误:格式错误的网址

方法输入: 浏览

预期产出: 方法名称:浏览

我需要在问号

之前的任何单词中拆分API

到目前为止,这是我的代码

if (S == null || S=="")
{
    lbOutput.Text = "Please dont leave Fields Empty";

}
else
{
    if (S.Contains("?") || S.Contains("&"))
    {
        lbOutput.Text = "Output";
        string url = txtInput.Text;
        string querystring = url.Substring(url.IndexOf("?"));
        System.Collections.Specialized.NameValueCollection parameters =
            System.Web.HttpUtility.ParseQueryString(querystring);
        //lbOutput.Text = querystring;
        lbLonRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("lon");
        lbLatRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("lat");
        lbDateRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("date");
        lbCloudRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("cloud_score");
        lbAPIRes.Text = System.Web.HttpUtility.ParseQueryString(querystring).Get("api_key");
    }
    if(S.Contains(" "))
    {
        lbOutput.Text = "Error: malformed URL";
        lbLonRes.Text = "";
        lbLatRes.Text = "";
        lbDateRes.Text = "";
        lbCloudRes.Text = "";
        lbAPIRes.Text = "";
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用Segments类的Uri属性来获取该方法,因为它将是最后一段。

您需要引用System.Net.HttpFormatting才能使用此代码,它会消除您对System.Web的依赖

using System;
using System.Net.Http;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://api.nasa.gov/planetary/earth/imagery?lon=100.75&lat=1.5&date=2014-02-01&cloud_score=True&api_key=DEMO_KEY";
            Uri theUri = new Uri(url);

            string method = theUri.Segments[theUri.Segments.Length - 1];

            Console.WriteLine("Method: {method}");

            var qa = theUri.ParseQueryString();

            foreach (string item in qa.AllKeys)
            {
                Console.WriteLine($"key: {item}, value: {qa[item]}");
            }

            Console.ReadKey();
        }
    }
}