建立一個webapi專案做測試使用。
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056457-1695176248.png)
建立新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056457-2017969710.png)
建立一個Http請求幫助類以及方法,用於獲取指定URL的資訊
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056269-627415935.png)
使用http請求訪問指定url,先執行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json資料。我們主要解析 大事記 部分的內容,位於Json的revisions欄位內
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056379-1969681664.png)
定義有關實體類,用於把收到的json資料轉換為物件
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056249-1903649173.png)
根據轉換的物件,可以看到物件內所有需要的內容,都在Content欄位裡面了。由於不知道是否存在多層結構,所以此處使用迴圈來遍歷內容。先搭建個模子。
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056334-525203030.png)
編寫一個正規表示式,根據規律,可以識別出,每個詞條都是以[]的形式存在,並且存在巢狀內容,所以做一個資料清理,清理巢狀抽重複的資料。
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056060-1496650449.png)
解析出來的新文字,看起來內容舒服一點了。然後我們只需要獲取[[xx年]]的這些詞行資料,所以可以繼續做個資料清理,匹配正規表示式
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056338-1441439925.png)
根據匹配的正規表示式內容,做個遍歷輸出
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056246-1801168064.png)
檢視輸出的內容,可以看到已經被過濾成功了:
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056475-1375874225.png)
不過預設是繁體字,咱們再完善下,做成簡體字。先安裝一個古老的包:ChineseConverter 有提示不用管,能用。
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056299-1529575335.png)
然後直接呼叫即可:
string simplifiedText = ChineseConverter.Convert(繁體中文字串, ChineseConversionDirection.TraditionalToSimplified);
然後重新跑一下,可以看到繁體變成了簡體了。
![0](https://img2024.cnblogs.com/blog/1995789/202407/1995789-20240717175056479-1223419301.png)
最後,剩下的一些括號等符號,或者特殊字元,只需要做一個全域性替換即可。以及如果需要解析其他內容,也可以自行再開發一個對應的正規表示式即可。
如需以上原始碼,可在個人公眾號【Dotnet Dancer】後臺回覆“歷史上的今天” 即可獲取以上原始碼。