demoshop

demo, trying to be the best_

今天在藍色小舖看到有人問了這個問題,一長串很髒的資料要抽出需要的部份,解法很多種但是寫法都很不直覺,所以demo就利用正規表示式(Regular Expression)來處理了這個問題,以下就是解法〔這分類還真難分,因為他存在於各種語言中,把他分類為ASP.NET是因為,其他的語法是ASP.NET的,哈~〕

正規表示式(Regular Expression)是一種對於文字處理有強大能力的技術?語言?功能? 很抱歉我不知道他屬於什麼...它的出現很早存在也很廣(各種語言幾乎都可以用),因為他真的太強大而且多變化所以demo非常推薦學習,但是因為它的語法難記憶所以也是很多程式設計人員學了就忘,甚至碰也不想碰得原因,但是相信我,學好這玩意,對於你的資料處理部份可以等於多了一把絕世神兵。

 

小舖的原始問題在這〔字串處理的方法〕看到了那麼髒的字串我第一個想到的就只有正規表示式(Regular Expression),因為我們稍微看一下就可以知道樓主想要的資訊是有一定規則的,所以這時候正規表示式(Regular Expression)就是最好的選擇,以下就是code啦

string a = "\"帥哥\",\"TXT\",03/12/2009,13:22:19,4,\"111\",192.192.192.192,";
string reg = "^\"(?<chinese>.[^a-z]).+(?<time>\\d{2}:\\d{2}:\\d{2}).+?(?<ip>\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})";
string[] strArray = a.Split(',');
foreach (Match item in Regex.Matches(a, reg))
{
    Response.Write("這是中文:" + item.Groups["chinese"].Value + "<br/>");
    Response.Write("這是時間:" + item.Groups["time"].Value + "<br/>");
    Response.Write("這是IP:" + item.Groups["ip"].Value + "<br/>");
} 

上面的規則我寫的很寬鬆,不過能解決問題就好,有進階需要的時候再加強即可。


這樣子頁面就會正確的印出我們所需的中文、時間格式、IP位置了,看起來是不是還不錯用阿,有心學習的demo提供幾個網路資源給你吧。

回應討論