Top > OOoBasic > Generic > TextSearch

検索 Edit

文字列の検索に com.sun.star.util.TextSearch サービスを利用できます。このサービスでは正規表現を利用した検索もできますが、制限があります。

正規表現にグループを入れても IDL リファレンスにあるような結果が戻らず、正規表現全体に一致した結果しか利用できません。3.2 では治っている様子。

サービス Edit

com.sun.star.util.TextSearch サービスをインスタンス化して利用します。

oTextSearch = CreateUnoService("com.sun.star.util.TextSearch")

検索は searchForward メソッドで前方に、searchBackward メソッドで後方に検索します。

.util.SearchResult searchBackward( 
   [in] string searchStr, [in] long startPos, [in] long endPos )
.util.SearchResult searchForward(
   [in] string searchStr, [in] long startPos, [in] long endPos )

setOptions メソッドで検索方法などを設定します。

検索結果は com.sun.star.util.SearchResult struct です。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
Sub textsearch_1
  sTxt = "AbcdEfg"
  
  oTextSearch = CreateUnoService("com.sun.star.util.TextSearch")
  aOptions = CreateUnoStruct("com.sun.star.util.SearchOptions")
  With aOptions
    .algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP
    .searchFlag = com.sun.star.util.SearchFlags.REG_EXTENDED
    .searchString = "c." ' 検索対象
  End With
  oTextSearch.setOptions(aOptions)
  aResult = oTextSearch.searchForward(sTxt,0,Len(sTxt) -1)
  If aResult.subRegExpressions = 1 Then
    msgbox aResult.startOffset(0) & ", " & aResult.endOffset(0)
  End If
End Sub

検索オプション Edit

検索の設定は setOptions メソッドで設定します。オプション設定は com.sun.star.util.SearchOptions struct を利用します。

searchString に検索対象の文字列を設定します。algorithmType プロパティに検索アルゴリズムを設定します。正規表現を利用するときには com.sun.star.util.SearchAlgorithms.REGEXP を設定します。また、拡張正規表現を利用するときには searchFlag に com.sun.star.util.SearchFlags.REG_EXTENDED を設定します。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes