來源:藍色小舖 (http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080827120329VEH&fumcde=FUM20041006161839LRJ&rplcnt=5)
請問如何搜尋出一篇文章中,是否有某一特定字串,並標註和取出前後文例:
來源:藍色小舖
請問如何搜尋出一篇文章中,是否有某一特定字串,並標註和取出前後文例:
dim str as string = "宋胡會可望談兩岸政治定位【吳燕玲╱台北報導】連胡會之後國民黨單獨召開記者會,以新聞公報的形式發布五大共識,親民黨中央昨天不願對連胡會發表看法"
當在textbox中輸入"連胡會"後可以找到文中有"連胡會"的字串,給予紅色,並取出前後10個字
結果如下: 【吳燕玲╱台北報導】連胡會之後國民黨單獨召開記親民黨中央昨天不願對連胡會發表看法
解答過程請看來源。
其中 Jeff 大將整個功能寫成函式 (ASP.NET 魔法學院),實際測試了一下,弄上去會發生 List 型別未定義的錯誤。
這時候加入 Imports System.Collections.Generic 就 ok 了。
不過呢,為了方便使用,我小小改了一下程式,將 List(of String) 改成使用 String ,這樣不用 Imports System.Collections.Generic 也可以用了
01 ''' <summary>
02 ''' 由字串中尋找關鍵字片段。
03 ''' </summary>
04 ''' <param name="Text">字串。</param>
05 ''' <param name="Keyword">關鍵字。</param>
06 ''' <param name="BLength">包含關鍵字前的字元數。</param>
07 ''' <param name="ALength">包含關鍵字後的字元數。</param>
08 ''' <returns>傳回符合的關鍵字片段的字串集合。</returns>
09 Public Function FindKeywordParts( _
10 ByVal Text As String, _
11 ByVal Keyword As String, _
12 ByVal BLength As Integer, _
13 ByVal ALength As Integer) As String
14
15 Dim sPattern As String
16 Dim oRegEx As Regex
17 Dim oMatchs As MatchCollection
18 Dim oList As New List(Of String)
19
20 '比對規則
21 sPattern = String.Format(".{{0,{1}}}{0}.{{0,{2}}}", Keyword, BLength, ALength)
22 oRegEx = New Regex(sPattern)
23
24 oMatchs = oRegEx.Matches(Text)
25
26 Dim oString As String = ""
27 For Each oMatch As Match In oMatchs
28 oString &= oMatch.Value
29 Next
30 Return oString
31
32 End Function
02 ''' 由字串中尋找關鍵字片段。
03 ''' </summary>
04 ''' <param name="Text">字串。</param>
05 ''' <param name="Keyword">關鍵字。</param>
06 ''' <param name="BLength">包含關鍵字前的字元數。</param>
07 ''' <param name="ALength">包含關鍵字後的字元數。</param>
08 ''' <returns>傳回符合的關鍵字片段的字串集合。</returns>
09 Public Function FindKeywordParts( _
10 ByVal Text As String, _
11 ByVal Keyword As String, _
12 ByVal BLength As Integer, _
13 ByVal ALength As Integer) As String
14
15 Dim sPattern As String
16 Dim oRegEx As Regex
17 Dim oMatchs As MatchCollection
18 Dim oList As New List(Of String)
19
20 '比對規則
21 sPattern = String.Format(".{{0,{1}}}{0}.{{0,{2}}}", Keyword, BLength, ALength)
22 oRegEx = New Regex(sPattern)
23
24 oMatchs = oRegEx.Matches(Text)
25
26 Dim oString As String = ""
27 For Each oMatch As Match In oMatchs
28 oString &= oMatch.Value
29 Next
30 Return oString
31
32 End Function
Update: 另外補上一個網址,可以找到很多相關的 Regular 規則 http://regexlib.com/