4.傍点表記を繰り返しを利用してルビ化する
対象ソースは以下の通り
#傍点表記をループで対応
#1文字単位でルビ振る(変な均等割り付けを自動発生させないため)
#テンプレート生成用変数初期化
$tnWdTemp=''
$tnKkymTemp=''
$tnKkymregx=''
#-lt=<(未満)で判定するため上で設定した傍点振る文字の最大値+1する
$tnMax = $tnMax + 1
#ループで設定した傍点振る文字の最大分置換を実行
for($i=1; $i -lt $tnMax;$i++){
#置換用文字列を連結(ループ中溜め込むことで現在の周回分の文字に対応)
$tnWdTemp=$tnWdTemp + $tnWd1 + '・' + $tnWd2 + '$' + $i + $tnWd3
#正規表現用文字列を連結 (ループ中溜め込むことで現在の周回分の文字に対応)
$tnKkymTemp=$tnKkymTemp + $tnKkym2
#目印になる「」と「」を正規表現につける
$tnKkymregx=$tnKkym1 + $tnKkymTemp + $tnKkym3
#置換実行
$strRepRaw = $strRepRaw -replace $tnKkymregx,$tnWdTemp
}
テンプレート生成用変数初期化では、この後文字連結を繰り返すための変数を初期化しています。
また、最初に設定した傍点文字数の最大に+1してループ条件を「傍点文字数の最大+1未満であれば」に則す形にします。
「for($i=1; $i -lt $tnMax;$i++)」で、「カウンタとなる変数iを1からループ開始して」、「変数iが変数tnMax未満(-lt)の間ループし続け」、「ループ内の処理({}内の処理)が一回終わったら変数iに1を加算($i++)」になります。
ループ内の処理は置換用のテンプレートを文字連結で作成しています。
内、ワード側の置換後正規表現とカクヨム記法での文字探索部分はループ中にどんどん付け足されていきます。
つまり、簡略化して書くと
一周目
ワード側の置換後正規表現(変数tnWdTemp)
<ルビタグ>・</ルビタグ><ルビ対象文字タグ>$1</ルビ対象文字タグ>
カクヨム側の文字探索部分(変数tnKkymTemp)
([.\w\s]{1})
二周目
ワード側の置換後正規表現(変数tnWdTemp)
<ルビタグ>・</ルビタグ><ルビ対象文字タグ>$1</ルビ対象文字タグ><ルビタグ>・</ルビタグ><ルビ対象文字タグ>$2</ルビ対象文字タグ>
カクヨム側の文字探索部分(変数tnKkymTemp)
([.\w\s]{1})([.\w\s]{1})
という風に周回分増えてく感じです。
この二つの変数だけ強くてニューゲームしてる感じです。
この後、「カクヨム側の文字探索部分(変数tnKkymTemp)」については傍点表記の為の「《《」と「》》」で前後を挟んであげてから、変数strRepRawの内容を置換(-replace)して、再度変数strRepRawに格納します。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます