user2147283

連続したスペース(空白文字)を見つける

Discussion created by user2147283 on Jul 21, 2018

フィールドへの入力の際、2つ以上の連続したスペース(空白文字)を入力する(強い)のある人がいたので、以下のようなスクリプトを書いて見ました。

 

スクリプトトリガ設定は、該当フィールドの、OnObjectExit へ設定します。

 

他の方が書いたスクリプトもみてみたいので、アドバイスやツッコミをお待ちしてます。

 

2018/7/22 変数名変更、コメント修正、テキストフォーマットの削除などの変更をしました。

 

#Last Updated: 2018/7/22

Creation Date: 2018/7/17 , Author: PgFlow YOUHEI SASAKI

PhoneNumber: 08059794102 , Email: youheisasaki@outlook.jp

 

Basic_Filter_For_InputValue_CoupleSpaceError.PgFlow Script Overview

・ダイアログで警告

 2個以上続く連続したスペース(空白文字)

 

・入力値から取り除きたいもの

 テキストスタイル

 改行

 前後のスペース

 

・変換したい入力内容

 全角スペースを半角スペースへ変換

 全角英数字記号を半角英数字記号へ変換

 

#フィールド名を変数$FieldNameへ設定

変数を設定 [ $FieldName; 値:Get(アクティブフィールド名) ]

#フィールド値を変数$InputValueへ設定

変数を設定 [ $InputValue; 値:TextFormatRemove ( GetField ( Get(アクティブフィールド名 ) ) ) ]

#フィールド値から前後の空白と改行を取り除き、英数字を半角英数字へ変換し変数$FilterValueへ設定

変数を設定 [ $FilterValue; 値:RomanHankaku ( Substitute ( Trim ( $InputValue ) ; ¶ ; "") ) ]

#エラーメッセージを変数$ErrorMessageへ設定

変数を設定 [ $ErrorMessage; 値:" " & "に、連続したスペースが含まれているため登録できません。¶(注意:改行は出来ません)" ]

#2個以上続くスペースをエラーとして判別する変数、$CoupleSpaceErrorへ"True"を設定

変数を設定 [ $CoupleSpaceError; 値:"True" ]

#入力テキストから2個以上続くスペースを探す

 

If [ PatternCount ( $FilterValue ; " " ) ≥ 2 ]

    #先頭文字位置を変数$iFへ設定

    変数を設定 [ $iF; 値:1 ]

    #検索回数を変数$iNへ設定

    変数を設定 [ $iN; 値:1 ]

    #検索対象文字列の長さを変数$iLへ設定

    変数を設定 [ $iL; 値:Length ( $FilterValue ) ]

    #入力された値に連続したスペースが無いか検索

    Loop

        Exit Loop If [ $iL = $iN ]

        #テキスト内で一つめのスペースを検索し、指定された回数目の先頭文字位置を変数$iPへ設定

        変数を設定 [ $iP; 値:Position ( $FilterValue ; " " ; $iF ; $iN ) ]

        #変数$iNへ値+1を追加する。(ループを抜けるためと、検索文字位置の移動の為)

        変数を設定 [ $iN; 値:$iN + 1 ]

        #テキスト内で二つめのスペースを検索し、指定された回数目の先頭文字位置を変数$iP2へ設定

        変数を設定 [ $iP2; 値:Position ( $FilterValue ; " " ; $iF ; $iN ) ]

        #検索したスペースの文字位置が連続しているかを確認。

        If [ $iP = ($iP2 - 1) ]

            #2個以上続くスペースが見つかれば変数$CoupleSpaceErrorへ"False"を設定

            変数を設定 [ $CoupleSpaceError; 値:"False" ]

        End If

    End Loop

End If

 

#$FilterValueにスペースが含まれない、または、連続したスペースが含まれていない値かチェック

If [ Exact ( $FilterValue; TrimAll ( $FilterValue; 3 ; 3 )) or $CoupleSpaceError = "True" ]

    #検証され書式を除いた値をフィールドへ設定する。

    フィールド設定 [ $FilterValue ]

    現在のスクリプト終了 [ 結果: True ]

Else

    #上記のチェックをパス出来ない場合、フィールド値の修正を求める

    カスタムダイアログを表示 [ タイトル: $FieldName; メッセージ: $FilterValue & $ErrorMessage; デフォルトボタン: 「修正」, 確定: 「いいえ」 ]

    現在のスクリプト終了 [ 結果: False ]

End If

Outcomes