【iPhone】'々'を置換する辞書ショートカットを作る [作業ログ]

蝶々夫人, 丁々発止, 三々五々, .....など、記号'々' が含まれた言葉をiPhone内臓辞書(スーパー大辞林など)で検索すると結果がちゃんと出てきてくれない場合がある。

実際の例

画像1

"三三五五" なら検索にヒット(スーパー大辞林)するが、"三々五々" はヒットしてくれない、ということ


そこで、ショートカットを使い、入力された文字列中の記号'々' を適切に置換してやることで、この問題の解決を図ってみることにする。

辞書ショートカットについては、過去記事で紹介したものが既に手元にあるので、それを使うことにする。


1. 置換の方法

肝となる置換処理は正規表現を使って行うことにする。

以下の正規表現を使い、入力に含まれている '々' を適切に置換してやる。

正規表現レシピ

画像2

s/​([^々]+)(々+)/$1$1/g
※ 2文字以上の連続した '々' にも対応している。例えば、"馬鹿々々しい" "馬鹿馬鹿しい" に置換してくれる

※ 「正規表現」をONにするのを忘れないようにする


正規表現を使わずに繰り返し文で入力を調べて置換していく方法もあるので、一応ここにおおまかな手順例を書いておく。ただし以下の方法は、'々' が連続で続く場合には対応していない。手順中の "出力する" は、「繰り返しの終了」タグに値を渡すことを意味する。

(1) 入力文字列を1文字ごとに分割し、リストにする

(2-0) (1) のリストで「項目ごとに繰り返す」

(2-1)「繰り返し項目」が、'々' の場合 には、「繰り返しインデックス - 1」のリスト項目を出力する。
 '々' でない場合 は「繰り返し項目」をそのまま出力する。

(3) 「繰り返しの結果」を結合しテキスト化する


2つ以上連続した '々' に対応させる方法としては、以下のようなものが思いついたので一応、おおまかな手順を書いておく。繰り返しになるが、手順中の "出力する" は、「繰り返しの終了」タグに値を渡すことを意味する。

(1) 手動変数Cを用意し、数値0で初期化しておく

(2) 入力文字列を1文字ごとに分割し、リストにする

(3-0) (2) で作ったリストで「項目ごとに繰り返す」

(3-1) 「繰り返し項目」が '々'でない場合 には、Cをインクリメントし、「繰り返し項目」をそのまま出力し、(3-1)に戻る
 「繰り返し項目が」'々'ならば、(3-2)へ

(3-2) C > 0 ならば、「繰り返しインデックス - C」を計算し、それを変数Sとする。その後、「S + C - 1」を計算し、それを変数Eとする。(3-2-1)に進む
 C = 0ならば、(3-3)へ

(3-2-1) Cに0を代入する

(3-2-2) リストから「Rangeの項目」を取得する。範囲は S〜Eまで。取得したものをそのまま出力する。(3-1)へ戻る

(3-3) 何も出力せず、(3-1)に戻る

(4) 「繰り返しの結果」を結合しテキスト化する


「繰り返し」アクションの出力については、以下に書いてある。一応リンクを貼っておく。


2. 組み込む

既存の辞書ショートカットに上に載せた正規表現での置き換え処理をそのまま組み込む。

既にあるショーカットに変更を加えるときは、アクションのコピペを使うと効率的なので、そのようにする。


3. 共有シートに表示する

必要なら、共有シートから呼び出して使えるようにする。

方法は、ここに書いてある。


4. まとめ

今回は、入力文字列中の '々' の置換処理についてまとめた。

めちゃくちゃ地味〜に便利になったので、まあよかったかなあと思っている。

あとは、タイトルの[作業ログ]いらないかもなあ、なんて思うけど、まあいいか。

.....それはそうと、アクションのコピペ便利ね。ガシガシ使っていきたい。

では〜。

この記事が気に入ったらサポートをしてみませんか?