當前位置: 妍妍網 > 碼農

Sprache:輕量級C#解析器構建,可用於字串驗證等。

2024-07-03碼農

我們在開發中,經常需要對一些結構化文本進行解析,用於驗證是否符合規則。我們一般會使用正規表式,同時正規表式也非常強大,但正規表式在語法不便閱讀與維護。

下面介紹一個簡單、輕量級的庫,方便我們在C#程式碼中定義解析規則。

01

計畫簡介

Sprache是一個簡單、輕量級的庫,專門用於直接在C#程式碼中構造解析器,以解析如程式碼這類的結構化文本。該庫的設計原則是提供易於理解和使用的API,同時保持足夠的靈活性以應對各種解析需求。

02

計畫特點

1、簡單易用:直接在C#程式碼中定義解析規則。

2、強型別的解析規則:解析規則是強型別的,這意味著它們可以在編譯時進行檢查,減少了執行時錯誤的可能性。

3、易於擴充套件:透過繼承和組合解析規則,開發者可以輕松地擴充套件已有的解析器,以滿足更復雜的解析需求。

4、易於測試:有助於確保解析器的正確性和穩定性。

03

使用範例

1、安裝依賴

Install-Package Sprache

2、字串驗證

// 引入Sprache庫 using Sprache;// 定義識別元的解析規則 Parser<string> Identifier =from leading in Parse.WhiteSpace.Many() // 可以包含前置空格 from first in Parse.Letter.Once() // 第一個字元只能是字母 from rest in Parse.LetterOrDigit.Many() // 剩余的字元可以是字母或數位 from trailing in Parse.WhiteSpace.Many() // 可以包含後置空格 select new string(first.Concat(rest).ToArray()); // first+rest作為識別元 // 編寫一個輔助方法,用於檢查輸入的文本中是否包含合法的識別元 voidCheckIdentifier(string text){var result = Identifier.TryParse(text);if (result.WasSuccessful) { Console.WriteLine($"[{text}]中包含合法的識別元.識別元為: {result.Value}"); }else { Console.WriteLine($"[{text}]中不包含合法的識別元."); }}// 測試解析效果 CheckIdentifier("a123");CheckIdentifier("1abc");

效果:

04

計畫地址

https://github.com/sprache/Sprache

- End -

分享一套.NetCore從入門到精通視訊教程

點選下方公眾號卡片,關註我

回復「 888 」,免費領取

覺得好看 點個在看👇