Top > OOoBasic > Generic > TextSearch
*検索 [#p4150b00]

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

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

#contents
**サービス [#q454a9a2]

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 です。

#code(ob){{
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
}}

**検索オプション [#mf42170b]
検索の設定は 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