.NET中怎么實(shí)現(xiàn)字符串解析操作

本篇文章為大家展示了.NET中怎么實(shí)現(xiàn)字符串解析操作,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。

首先是“token”,token是最小的信息單元,我們可以把它當(dāng)作是一個(gè)字符串來處理。而多個(gè)token則組成了一個(gè)token group,token group之間的各token使用“-”進(jìn)行分割。例如,以下便定義一個(gè)了token group:

jeffz-hello-world

一個(gè)token group可以用一個(gè)字符串?dāng)?shù)組或列表來表示,例如上面的字符串則表示一個(gè)包含三個(gè)token的token group,分別是jeffz,hello和world。多個(gè)token group則可以組成一整個(gè)字符串信息,我們把它稱為text。一個(gè)text中的各個(gè)token group使用“--”進(jìn)行分割,例如:

group1-hello--group2-world一個(gè)text可以認(rèn)為是token group的數(shù)組或列表。因此,最終從一個(gè)text中提取到的信息,則可以用一個(gè)字符串?dāng)?shù)組的列表來表示。例如,以上的text的信息其實(shí)就類似于:

new List<string[]> { new string[] { "group1", "hello" }, new string[] { "group2", "world" } }

不過您想到這樣一個(gè)問題:“-”是作為分割符使用的,但如果一個(gè)token中本身需要包含“-”又該如何呢?于是,我們又引入了單引號(hào),被一組單引號(hào)包裹的token,其中所有的“-”被當(dāng)作是普通的字符處理,不作為分隔符。例如:

jeffz-'hello-world'這樣一個(gè)字符串所表示的text,它包含一個(gè)token group,其中有兩個(gè)token:

new List<string[]> { new string[] { "jeffz", "hello-world" } }

但是,既然單引號(hào)也有特殊含義了,那么一個(gè)token中又如何表示一個(gè)單引號(hào)呢?于是乎,我們?cè)俣x一個(gè)規(guī)則,如果一個(gè)token中需要包含單引號(hào)的話,我們需要使用單引號(hào)來包含這個(gè)token,并且token中的單引號(hào)變成兩個(gè)單引號(hào)。例如:

jeffz-'hello''''world'它所表示的數(shù)據(jù)即為:

new List<string[]> { new string[] { "jeffz", "hello''world" } }

text中包含四個(gè)單引號(hào),但是表示的數(shù)據(jù)中只有兩個(gè)單引號(hào),這就是我們的“轉(zhuǎn)義”規(guī)則。還有值得注意的是,如果token中需要包含單引號(hào)或“-”,那么這個(gè)token在表示的時(shí)候一定需要用一對(duì)單引號(hào)包裹起來——這也是為了“簡化規(guī)則”。

這次的“趣味編程”便是希望寫一個(gè)方法,從text中提取出“數(shù)據(jù)”,也就是一個(gè)List<string[]>,我們假設(shè)所有的輸入都是正確的。

那么,這個(gè)規(guī)則又有什么含義呢?在我的項(xiàng)目中,這個(gè)字符串被當(dāng)作是產(chǎn)品查詢頁面的URL,表示的自然是產(chǎn)品的查詢條件。由于查詢條件非常的豐富,還會(huì)根據(jù)不同的分類有所改變,因此在URL中表現(xiàn)查詢條件非常的麻煩。例如,淘寶的查詢頁面URL便是這樣的:

http://search2.taobao.com/browse/0/n-g,geytami-g,geytami-------1------7------------------4----0--------------------g,ojsxgzlsozsv64dsnfrwkwzvgaydalbzhe4tsxi---g,whflzr5rxy-------2-------b--40--coefp-0-all-0.htm?search_multi_condition=1&ssid=s1#ListView但是,這個(gè)URL對(duì)于某個(gè)人來說幾乎沒有任何可讀性。普通用戶對(duì)此的關(guān)注度自然小很多,但是這樣的URL也會(huì)給開發(fā)人員的工作造成不小的麻煩。在我看來,有一個(gè)相對(duì)易讀的規(guī)則還是很重要的。此外,據(jù)說URL中的關(guān)鍵字對(duì)于SEO也很有幫助(當(dāng)然這點(diǎn)我不確定)。因此,我們?cè)O(shè)計(jì)了本文這種“自洽”的數(shù)據(jù)表示方式。如果您足夠“敏感”的話,會(huì)發(fā)現(xiàn)作為特殊字符的單引號(hào)或是“-”符號(hào),它們?cè)赨RL上是不需要轉(zhuǎn)義的——這也是我們?yōu)樗鼈冑x予特殊含義的原因。

于是現(xiàn)在,我們便可以使用這樣的URL字符串來表示一個(gè)查詢條件了:

cpu-3.0g--color-red-green-black--price-5000-8000--weight-'3-'--keywords-'levi''s'

這個(gè)text拆開后的得到的數(shù)據(jù)便是:

new List<string[]>{    new string[] { "cpu", "3.0g" },    new string[] { "color", "red", "green", "black" },    new string[]   { "price", "5000", "8000" },    new string[] { "weight", "3-" },    new string[] { "keywords", "levi's" },}

上述內(nèi)容就是.NET中怎么實(shí)現(xiàn)字符串解析操作,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前標(biāo)題:.NET中怎么實(shí)現(xiàn)字符串解析操作
文章地址:http://muchs.cn/article40/jopoeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)軟件開發(fā)、小程序開發(fā)微信公眾號(hào)、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)