国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ASP.NET Core路由模板字符串匹配是如何通過(guò)手動(dòng)檔實(shí)現(xiàn) route template 匹配字符串實(shí)現(xiàn)的

在開(kāi)發(fā)ASP.NET Core應(yīng)用程序時(shí),我們經(jīng)常需要處理URL路由。使用路由模板,我們可以定義特定格式的URL,并將其映射到相應(yīng)的控制器和操作方法上。但是,在某些情況下,我們可能需要根據(jù)傳入的URL字符串來(lái)判斷匹配的是哪個(gè)路由模板,這就需要手動(dòng)實(shí)現(xiàn)字符串的匹配過(guò)程。

使用Microsoft.AspNetCore.Routing進(jìn)行字符串匹配

在ASP.NET Core中,我們可以使用Microsoft.AspNetCore.Routing命名空間中的一些類(lèi)來(lái)實(shí)現(xiàn)字符串匹配。具體來(lái)說(shuō),我們可以使用TemplateParser、RouteValueDictionary和TemplateMatcher這三個(gè)類(lèi)來(lái)完成對(duì)路由模板字符串的解析和匹配。

步驟一:定義路由模板列表

首先,我們需要定義一個(gè)包含所有可能路由模板的集合。假設(shè)我們已知的路由模板有以下兩個(gè):

public static class RouteTemplates
{
    public const string BlogPostUrl = "/{blogApp}/{postType}/{id:int}/{**slug}";  
    public const string BlogPostUrlWithExt = "/{blogApp}/{postType}/{idOrSlug}.html";  
}

步驟二:解析URL字符串并進(jìn)行匹配

在我們獲取到傳入的URL字符串后,我們可以逐個(gè)遍歷路由模板列表,并嘗試將URL字符串與每個(gè)模板進(jìn)行匹配。以下是一個(gè)示例代碼:

using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Routing.Template;
class Program
{
    static void Main()
    {
        var routeTemplates = new[]
        {
            "/{blogApp}/{postType}/{id:int}/{**slug}",
            "/{blogApp}/{postType}/{idOrSlug}.html"
        };
        var urlPath = "/diary/problem/682";
        foreach (string template in routeTemplates)
        {
            var routeTemplate = TemplateParser.Parse(template);
            var values = new RouteValueDictionary();
            var matcher = new TemplateMatcher(routeTemplate, values);
            if (matcher.TryMatch(urlPath, values))
            {
                foreach (var item in values)
                {
                    Console.WriteLine("{0}: {1}", item.Key, item.Value);
                }
            }
        }
    }
}

在上述代碼中,我們首先使用TemplateParser.Parse方法將路由模板字符串解析為RouteTemplate實(shí)例。然后,我們創(chuàng)建一個(gè)空的RouteValueDictionary對(duì)象來(lái)存儲(chǔ)解析后的值。接下來(lái),我們使用TemplateMatcher類(lèi)的TryMatch方法來(lái)嘗試將URL字符串與路由模板進(jìn)行匹配,并將匹配結(jié)果存儲(chǔ)在RouteValueDictionary中。

最后,我們可以通過(guò)遍歷RouteValueDictionary來(lái)獲取匹配結(jié)果。在示例代碼中,我們只是簡(jiǎn)單地將結(jié)果輸出到控制臺(tái)上,但你可以根據(jù)自己的需求進(jìn)行相應(yīng)處理。

輸出結(jié)果

對(duì)于給定的URL字符串 "/diary/problem/682",使用上述代碼將得到以下輸出:

blogApp: diary
postType: problem
id: 682
slug:

通過(guò)解析和匹配路由模板,我們成功地將URL字符串的組成部分與指定的命名參數(shù)進(jìn)行了匹配,并獲得了相應(yīng)的值。

補(bǔ)充

如果遇到新的額外問(wèn)題,可以看看這一篇:ASP.NET Core: TemplateMatcher 忽略類(lèi)型約束問(wèn)題的解決方法文章來(lái)源地址http://www.zghlxwxcb.cn/article/682.html

到此這篇關(guān)于ASP.NET Core路由模板字符串匹配是如何通過(guò)手動(dòng)檔實(shí)現(xiàn) route template 匹配字符串實(shí)現(xiàn)的的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/682.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長(zhǎng)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ASP.NET Core中路由規(guī)則匹配

    RESTful約束,如果在一個(gè)控制器里面有多個(gè)Get、Post...的操作 1、在一個(gè)控制器里面可以定義多個(gè)API方法 2、通過(guò)路由規(guī)則來(lái)區(qū)分 /// summary /// 獲取用戶(hù)信息 /// /summary /// param name=\\\"user\\\"/param /// returns/returns [HttpGet] public User GetUser() { ? ? //... } GetUser()對(duì)應(yīng)的Request URL:https://localhost:71

    2024年02月13日
    瀏覽(88)
  • P3375 【模板】KMP 字符串匹配

    P3375 【模板】KMP 字符串匹配

    給出兩個(gè)字符串 s 1 s_1 s 1 ? 和 s 2 s_2 s 2 ? ,若 s 1 s_1 s 1 ? 的區(qū)間 [ l , r ] [l, r] [ l , r ] 子串與 s 2 s_2 s 2 ? 完全相同,則稱(chēng) s 2 s_2 s 2 ? 在 s 1 s_1 s 1 ? 中出現(xiàn)了,其出現(xiàn)位置為 l l l 。 現(xiàn)在請(qǐng)你求出 s 2 s_2 s 2 ? 在 s 1 s_1 s 1 ? 中所有出現(xiàn)的位置。 定義一個(gè)字符串 s s s 的

    2024年02月14日
    瀏覽(30)
  • 【字符串匹配】暴力匹配算法

    【字符串匹配】暴力匹配算法

    ? 暴力匹配算法,也稱(chēng)為樸素字符串匹配算法,是一種簡(jiǎn)單但不高效的字符串匹配方法。它的原理非常直觀,其主要思想是逐個(gè)字符地比較文本串和模式串,從文本串的每個(gè)可能的起始位置開(kāi)始,依次檢查是否有匹配的子串。以下是暴力匹配算法的詳細(xì)原理: 1. 一個(gè)字一個(gè)

    2024年02月09日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)】數(shù)組和字符串(十四):字符串匹配1:樸素的模式匹配算法(StringMatching)

    【數(shù)據(jù)結(jié)構(gòu)】數(shù)組和字符串(十四):字符串匹配1:樸素的模式匹配算法(StringMatching)

    ??字符串(String)是由零個(gè)或多個(gè)字符(char)順序排列組成的有限序列,簡(jiǎn)稱(chēng)為串。例如 “good morning”就是由12個(gè)字符構(gòu)成的一個(gè)字符串。一般把字符串記作: S = ′ ′ a 0 a 1 … a n ? 1 ′ ′ S=\\\'\\\'a_{0} a_{1}…a_{n-1}\\\'\\\' S = ′′ a 0 ? a 1 ? … a n ? 1 ′′ ? ??其中S是串名,引號(hào)中

    2024年02月05日
    瀏覽(41)
  • 字符串查找匹配算法

    字符串查找匹配算法

    字符串匹配(查找)是字符串的一種基本操作:給定帶匹配查詢(xún)的文本串S和目標(biāo)子串T,T也叫做模式串。在文本S中找到一個(gè)和模式T相符的子字符串,并返回該子字符串在文本中的位置。 Brute Force Algorithm,也叫樸素字符串匹配算法,Naive String Matching Algorithm。 基本思路就是將

    2024年02月14日
    瀏覽(27)
  • python字符串模糊匹配,并計(jì)算匹配分?jǐn)?shù)

    python字符串模糊匹配,并計(jì)算匹配分?jǐn)?shù)

    thefuzz包以前叫fuzzywuzzy,0.19版本開(kāi)始改名為thefuzz,github地址: GitHub - seatgeek/thefuzz: Fuzzy String Matching in Python 可以通過(guò)命令pip install thefuzz安裝此包。用法還是比較簡(jiǎn)單的: 上面兩個(gè)字符串的相似度為89%。 我們先看看這個(gè)包下面的源碼,來(lái)查看thefuzz是怎么實(shí)現(xiàn)模糊匹配的。the

    2023年04月23日
    瀏覽(100)
  • 【kmp算法】字符串匹配

    kmp算法解決的是字符串匹配的問(wèn)題,具體來(lái)說(shuō)假定我們要在主串s[ ] 中匹配模式串p[ ],找到匹配到的位置loc; 最自然的想法是暴力寫(xiě)法 (BF)枚舉主串字符s[ i ] ,和模式串p[ j ]。一個(gè)一個(gè)匹配,如果匹配失敗,i指針回退回起點(diǎn),往前進(jìn)一位,再次進(jìn)行比較,知道匹配成功。

    2024年02月04日
    瀏覽(31)
  • 字符串匹配-KMP算法

    字符串匹配-KMP算法

    KMP算法,字符串匹配算法,給定一個(gè)主串S,和一個(gè)字串T,返回字串T與之S匹配的數(shù)組下標(biāo)。 在學(xué)KMP算法之前,對(duì)于兩個(gè)字符串,主串S,和字串T,我們根據(jù)暴力匹配,定義兩個(gè)指針,i指向主串S的起始,j指向字串T的起始,依次比較,如果 主串i位置的值等于子串j位置的值,

    2024年02月14日
    瀏覽(28)
  • 字符串匹配算法:KMP

    字符串匹配算法:KMP

    Knuth–Morris–Pratt(KMP)是由三位數(shù)學(xué)家克努斯、莫里斯、普拉特同時(shí)發(fā)現(xiàn),所有人們用三個(gè)人的名字來(lái)稱(chēng)呼這種算法,KMP是一種改進(jìn)的字符串匹配算法,它的核心是利用匹配失敗后的信息,盡量減少模式串與主串的匹配次數(shù)以達(dá)到快速匹配的目的。它的時(shí)間復(fù)雜度是 O(m+n) 字

    2024年02月06日
    瀏覽(24)
  • 動(dòng)態(tài)規(guī)劃--通配字符串匹配

    1. 題目來(lái)源 鏈接:通配符匹配 來(lái)源:LeetCode 2. 題目說(shuō)明 給定一個(gè)字符串 (s) 和一個(gè)字符模式 § ,實(shí)現(xiàn)一個(gè)支持 ‘?’ 和 ‘*’ 的通配符匹配。 ‘?’ 可以匹配任何單個(gè)字符。 ‘*’ 可以匹配任意字符串(包括空字符串)。 兩個(gè)字符串完全匹配才算匹配成功。 說(shuō)明: s 可能為

    2024年02月14日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包