本クラスは、指定文字列を文字処理定義に従って解析するクラスです。
注意
本クラスでは、指定文字列を1文字ずつチェックする必要があるため、文字列長に比例して処理コストがかかります。クライアントスペックや他のタスクの状況を考慮し、チェックさせる文字列の長さを適切に決定するようにしてください。例えば、上限を1000文字程度とし、テスト環境で処理性能を確認しながら値を調整することをおすすめします。
◆コンストラクタ
JSVRAX.Utility.CharBehavior.Parserクラスインスタンスを生成します。
var parser = new JSVRAX.Utility.CharBehavior.Parser(_targetString, _map, _handler)
_targetString
型 | string型 |
正常値 | 解析のターゲット文字列 |
省略 | 可 |
_map
型 | |
正常値 | 文字処理定義 |
省略 | 可 |
_handler
型 | |
正常値 | 解析ハンドラ。文字処理定義に何らかの定義がある文字を発見した際に呼ばれる。 |
省略 | 可 |
◆parse
解析を開始する。
parser.parse()
なし。
◆targetString
解析のターゲット文字列を設定/返却します。
parser.targetString [ = _targetString ]
_targetString
型 | コンストラクタの_targetStringと同じ |
正常値 | コンストラクタの_targetStringと同じ |
デフォルト | コンストラクタの_targetString |
◆map
文字処理定義を設定/返却します。
parser.map [ = _map ]
_map
型 | コンストラクタの_mapと同じ |
正常値 | コンストラクタの_mapと同じ |
デフォルト | コンストラクタの_map |
◆handler
解析ハンドラを設定/返却します。
parser.handler [ = _handler ]
_handler
型 | コンストラクタの_handlerと同じ |
正常値 | コンストラクタの_handlerと同じ |
デフォルト | コンストラクタの_handler |
◆index
解析インデックスを設定/返却します。
parser.index [ = _index ]
_index
型 | number型 |
正常値 | 現在の解析位置を示すインデックス。string型同様、2byte文字を1と数える。0以上の数値で、サロゲートペアの場合は下位サロゲートの位置を示す。 |
デフォルト | 0 |
◆parse
解析を開始します。
parser.parse()
なし
<SCRIPT> var str = (ターゲット文字列); var map = (JSVRAX.Utility.CharBehavior.DimensionMap配列型の文字処理定義); var altstr = (代替文字列); var parser = new JSVRAX.Utility.CharBehavior.Parser(str, map, 1. function(_parser, _code, _charBehav) 2. { if(_charBehav.isInvalid()) 3. { var index = _parser.index - ((0x10000 <= _code) ? 1 : 0); 4. _parser.targetString = _parser.targetString.substring(0, index) + altstr 5. + _parser.targetString.substring(_parser.index + 1, _parser.targetString.length); _parser.index = index + altstr.length - 1; 6. } return true; 7. }); parser.parse(); 8. alert(parser.targetString); 9. </SCRIPT>
JSVRAX.Utility.CharBehavior.Parserインスタンスを生成
解析ハンドラの定義
入力不可文字の場合
インデックスを算出(2面の文字は1つ前から始まっている)
解析ターゲット文字列を代替文字列で置換する
インデックスを変更
処理続行で復帰
解析開始
解析結果文字列をalert()出力