MultiHilight 関数
カテゴリー : テキスト処理計算結果のデータタイプ : テキスト
対応FileMakerバージョン :
作者 : 社本修司 株式会社ジェネコム
概要
スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。構文
MultiHilight ( テキスト ; 検索テキスト ; カウンター )
引数
| 引数名 | タイプ | 備考 | 例 |
|---|---|---|---|
| テキスト | テキスト | 任意のテキスト | FileMakerPro8 |
| 検索テキスト | テキスト | 空白で区切られた検索テキスト | maker 8 FILE |
| カウンター | 数字 | 0 のみ | 0 |
例
MultiHilight ( "FileMakerPro8" ; "maker 8 FILE" ; 0 )
結果
FileMakerPro8
式
/*
MultiHilight ( テキスト ; 検索テキスト ; カウンター )
スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。
*/
Let (
[
TEXT = テキスト ;
SERCHLIST =
Substitute (
// FileMaker Pro 8 以降のみで利用する場合
// TextStyleAdd ( TextFormatRemove ( 検索テキスト ) ; 太字 ) ;
// FileMaker Pro 7 で利用する場合
TextStyleAdd ( TextColor ( 検索テキスト ; RGB ( 0 ; 0 ; 0 ) ) ; 太字 ) ;
[ " " ; "¶" ] ; [ " " ; "¶" ] ; [ "¶¶¶" ; "¶" ] ; [ "¶¶" ; "¶" ]
) ; // 検索テキストをリスト化
COUNTER = カウンター ;
// 置換用の色1〜10,検索語句が10以上の場合は1から繰り返す
COLORLIST =
RGB ( 255 ; 0 ; 0 ) & "¶" & // Red
RGB ( 0 ; 0 ; 255 ) & "¶" & // Blue
RGB ( 0 ; 128 ; 0 ) & "¶" & // Green
RGB ( 255 ; 0 ; 255 ) & "¶" & // Magenta
RGB ( 255 ; 165 ; 0 ) & "¶" & // Orange
RGB ( 50 ; 50 ; 205 ) & "¶" & // Navy
RGB ( 50 ; 205 ; 50 ) & "¶" & // Limegreen
RGB ( 255 ; 215 ; 0 ) & "¶" & // Gold
RGB ( 165 ; 42 ; 42 ) & "¶" & // Brown
RGB ( 92 ; 0 ; 182 ) ; // Indigo
// FileMaker Pro 8 以降のみで利用する場合
// COLOR = GetValue ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ) ;
// FileMaker Pro 7 で利用する場合
COLOR = Substitute ( MiddleValues ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ; 1 ) ; "¶" ; "" ) ;
NEXTLIST = MiddleValues ( SERCHLIST ; 2 ; ValueCount ( SERCHLIST ) - 1 ) ;
// FileMaker Pro 8 以降のみで利用する場合
// SEARCHWORD = GetValue ( SEARCHLIST ; 1 ) ;
// FileMaker Pro 7 で利用する場合
SEARCHWORD = Substitute ( LeftValues ( SERCHLIST ; 1 ) ; "¶" ; "" ) ;
PROPERSEARCHWORD = Proper ( SEARCHWORD ) ;
LOWERSEARCHWORD = Lower ( SEARCHWORD ) ;
UPPERSEARCHWORD = Upper ( SEARCHWORD ) ;
iSEARCHWORD = Left ( LOWERSEARCHWORD ; 1 ) & Proper ( Middle ( LOWERSEARCHWORD ; 2 ; Length ( LOWERSEARCHWORD ) - 1 ) ) ;
ZENKAKUSEARCHWORD = KanaZenkaku ( SEARCHWORD ) ;
HANKAKUSEARCHWORD = KanaHankaku ( SEARCHWORD )
] ;
Case (
not IsEmpty ( SEARCHWORD ) ;
MultiHilight (
Substitute (
TEXT ;
[ SEARCHWORD ; TextColor ( SEARCHWORD ; COLOR ) ] ;
[ PROPERSEARCHWORD ; TextColor ( PROPERSEARCHWORD ; COLOR ) ] ;
[ LOWERSEARCHWORD ; TextColor ( LOWERSEARCHWORD ; COLOR ) ] ;
[ UPPERSEARCHWORD ; TextColor ( UPPERSEARCHWORD ; COLOR ) ] ;
[ iSEARCHWORD ; TextColor ( iSEARCHWORD ; COLOR ) ] ;
[ ZENKAKUSEARCHWORD ; TextColor ( ZENKAKUSEARCHWORD ; COLOR ) ] ;
[ HANKAKUSEARCHWORD ; TextColor ( HANKAKUSEARCHWORD ; COLOR ) ]
) ;
NEXTLIST ;
COUNTER + 1
) ; // SEARCHWORD に値がある場合は再帰呼び出し
TEXT // SEARCHWORD が空の時はTEXTのみ
)
)
MultiHilight ( テキスト ; 検索テキスト ; カウンター )
スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。
*/
Let (
[
TEXT = テキスト ;
SERCHLIST =
Substitute (
// FileMaker Pro 8 以降のみで利用する場合
// TextStyleAdd ( TextFormatRemove ( 検索テキスト ) ; 太字 ) ;
// FileMaker Pro 7 で利用する場合
TextStyleAdd ( TextColor ( 検索テキスト ; RGB ( 0 ; 0 ; 0 ) ) ; 太字 ) ;
[ " " ; "¶" ] ; [ " " ; "¶" ] ; [ "¶¶¶" ; "¶" ] ; [ "¶¶" ; "¶" ]
) ; // 検索テキストをリスト化
COUNTER = カウンター ;
// 置換用の色1〜10,検索語句が10以上の場合は1から繰り返す
COLORLIST =
RGB ( 255 ; 0 ; 0 ) & "¶" & // Red
RGB ( 0 ; 0 ; 255 ) & "¶" & // Blue
RGB ( 0 ; 128 ; 0 ) & "¶" & // Green
RGB ( 255 ; 0 ; 255 ) & "¶" & // Magenta
RGB ( 255 ; 165 ; 0 ) & "¶" & // Orange
RGB ( 50 ; 50 ; 205 ) & "¶" & // Navy
RGB ( 50 ; 205 ; 50 ) & "¶" & // Limegreen
RGB ( 255 ; 215 ; 0 ) & "¶" & // Gold
RGB ( 165 ; 42 ; 42 ) & "¶" & // Brown
RGB ( 92 ; 0 ; 182 ) ; // Indigo
// FileMaker Pro 8 以降のみで利用する場合
// COLOR = GetValue ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ) ;
// FileMaker Pro 7 で利用する場合
COLOR = Substitute ( MiddleValues ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ; 1 ) ; "¶" ; "" ) ;
NEXTLIST = MiddleValues ( SERCHLIST ; 2 ; ValueCount ( SERCHLIST ) - 1 ) ;
// FileMaker Pro 8 以降のみで利用する場合
// SEARCHWORD = GetValue ( SEARCHLIST ; 1 ) ;
// FileMaker Pro 7 で利用する場合
SEARCHWORD = Substitute ( LeftValues ( SERCHLIST ; 1 ) ; "¶" ; "" ) ;
PROPERSEARCHWORD = Proper ( SEARCHWORD ) ;
LOWERSEARCHWORD = Lower ( SEARCHWORD ) ;
UPPERSEARCHWORD = Upper ( SEARCHWORD ) ;
iSEARCHWORD = Left ( LOWERSEARCHWORD ; 1 ) & Proper ( Middle ( LOWERSEARCHWORD ; 2 ; Length ( LOWERSEARCHWORD ) - 1 ) ) ;
ZENKAKUSEARCHWORD = KanaZenkaku ( SEARCHWORD ) ;
HANKAKUSEARCHWORD = KanaHankaku ( SEARCHWORD )
] ;
Case (
not IsEmpty ( SEARCHWORD ) ;
MultiHilight (
Substitute (
TEXT ;
[ SEARCHWORD ; TextColor ( SEARCHWORD ; COLOR ) ] ;
[ PROPERSEARCHWORD ; TextColor ( PROPERSEARCHWORD ; COLOR ) ] ;
[ LOWERSEARCHWORD ; TextColor ( LOWERSEARCHWORD ; COLOR ) ] ;
[ UPPERSEARCHWORD ; TextColor ( UPPERSEARCHWORD ; COLOR ) ] ;
[ iSEARCHWORD ; TextColor ( iSEARCHWORD ; COLOR ) ] ;
[ ZENKAKUSEARCHWORD ; TextColor ( ZENKAKUSEARCHWORD ; COLOR ) ] ;
[ HANKAKUSEARCHWORD ; TextColor ( HANKAKUSEARCHWORD ; COLOR ) ]
) ;
NEXTLIST ;
COUNTER + 1
) ; // SEARCHWORD に値がある場合は再帰呼び出し
TEXT // SEARCHWORD が空の時はTEXTのみ
)
)
エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。
詳細説明
スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。ただし、<検索テキスト>が強調表示されるのは以下の場合で、一部制限があります。
・<検索テキスト>と<テキスト>の大文字小文字が同じ場合
(例)<検索テキスト>「TextFormatRemove」<テキスト>「TextFormatRemove」
・<検索テキスト>の大文字小文字を問わず<テキスト>が全て小文字の場合
(例)<検索テキスト>「TEXTFORMATREMOVE」<テキスト>「textformatremove」
・<検索テキスト>の大文字小文字を問わず<テキスト>が全て大文字の場合
(例)<検索テキスト>「TextFormatRemove」<テキスト>「TEXTFORMATREMOVE」
・<検索テキスト>の大文字小文字を問わず<テキスト>の頭文字が大文字で他が小文字の場合
(例)<検索テキスト>「TextFormatRemove」<テキスト>「Textformatremove」
※<テキスト>「TextFormatRemove」に対して<検索テキスト>「textformatremove」は強調表示されません。
強調色は、Red,Blue,Green,Magenta,Orange,Navy,Limegreen,Gold,Brown,Indigo の10色ですが、検索語句が11以上の場合、再度、Red,Blue,Green,…と同じ色を繰り返します。
強調表示の色が単色でもいい場合、
http://www.briandunning.com/cf/579
HiliteMulti 関数を使うことで大文字小文字の区別をしない強調表示が可能です。
この関数が使用する他のカスタム関数
- なし
この関数を使用する他のカスタム関数
- なし
フィードバック
この関数について何かお気づきの点がありましたら、お気づきの点、ご意見、ご感想などをお知らせください。FMPro.jp 事務局経由でカスタム関数の作者に転送させていただきます。なお、いただいたフィードバックにつきましては、FMPro.jp 事務局から個別にご返信を差し上げておりません。あらかじめご了承いただくようお願いいたします。
注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.jpは責任を負いません。