小談 - web模仿手機打電話與正則表達式

   昨天遇到了一個很棘手的問題,就是手機端調用web端的頁面,若是用編輯器插入的內容頁面中有電話的的數據就要變一下格式,讓手機端能夠實現撥號的功能。android

 研究了半天就是沒一點頭緒,可是偶爾看到數據中每個電話的附件都會[#calltel#:]此字段(這個字段應該是程序在使用editor插入電話時規定的標識吧),那就更好了,就發現出口了。web

 突然靈機一動想到個方法,一:用正則判斷[#calltel#:],二:而後再在頁面head標籤中加一個meta標籤這樣就能夠了。正則表達式

 可是問題又來了,第一步怎麼實施呢?並且自我批評一下,正則沒怎麼接觸過,以前也是用到了再查查用用的,唉,書到用時方恨少啊!沒有辦法只有請教了。找了一位資深專家研究出來了。瀏覽器

View Code

可是怎麼取值呢?並且若是實現的話,結果是兩部分的呀。如今的目的是隻抓取電話。沒辦法找度娘幫忙吧,結果招到了這個:iphone

第一步:要在.net中使用正則表達式,須要引用System.Text.RegularExpressions 命名空間。新建一個正則表達式類:編輯器

View Code

第二步:使用正則表達式匹配字符串:url

View Code

Match方法返回單個的精確匹配結果,Matches返回全部的匹配結果的一個Match類的集合,IsMatch方法返回是否可以匹配輸入字符串的一個bool結果。spa

Match類是一個保持匹配結果的類,它有一個成員Groups,是一個保存Group class的集合類。.net

Group 表示單個捕獲組的結果。因爲存在數量詞,一個捕獲組能夠在單個匹配中捕獲零個、一個或更多的字符串,所以 Group 提供 Capture 對象的集合。3d

Capture 表示單個成功捕獲中的一個子字符串。

Group從Capture繼承,表示單個捕獲組的最後一個字符串。

即對於一個Group 類的實例對象group:

int captureCount = group.Captures.Count;

則group.Value與group.Captures[captureCount - 1].Value是相等的。

如下是幾個正則表達式的使用樣例:

使用正則表達式檢查字符串是否具備表示貨幣值的正確格式。

View Code

使用正則表達式檢查字符串中重複出現的詞。

View Code

使用 Capture 對象在控制檯中顯示每一個正則表達式匹配項組的成員。

View Code

參照着這個方法找到一種適合我本身的方法了,我就用Matches吧,爲了方便起見。而後就是把內容中的電話替換一下,也就是第二大部分了。

剛 開始作的時候是直接把meta分不一樣的瀏覽器顯示在不一樣的head標籤中,可是問題是ipone的能夠實現了,可是android的確一直提示說協議不符 合要求。整了半天也沒整出來,而後就狂找資料。固然也有android的小同窗幫忙了。一直整到下班沒結果。鬱悶了一個晚上。

今天早上咱們協商了一下達成共識,(其實這個也是android的小朋友提醒的),就是把meta標籤部分客戶端。一直用iphone的協議,而後把meta替換成url的連接,他們根據tel作一些處理。

而後就能夠實現模仿撥號功能了。

哦,對了最重要的好像沒說,就是meta標籤的顯示:

View Code

這樣的就ok了。爲了防止本身忘就趕快備份一下吧,趁熱打鐵的行動起來。同時也但願對你們有幫助。

相關文章
相關標籤/搜索