「テキスト整形」の版間の差分
見出しの修正 |
SyntaxHighlightにcopyの追加 |
||
| (同じ利用者による、間の8版が非表示) | |||
| 14行目: | 14行目: | ||
* マクロの仕様上、<b style="color:#c00;">矩形選択での処理には原則対応していません。</b> | * マクロの仕様上、<b style="color:#c00;">矩形選択での処理には原則対応していません。</b> | ||
== お知らせ | == お知らせ == | ||
<b style="color:#c00;">仕様変更によりモードは廃止されました。</b> | <b style="color:#c00;">仕様変更によりモードは廃止されました。</b> | ||
詳しくは [[# | 詳しくは [[#変更履歴]] または [[利用者:Masme]] のページをご覧ください。 | ||
旧仕様の利用者はお手数ですが基本コードおよび拡張コードの更新をお願いいたします。 | 旧仕様の利用者はお手数ですが基本コードおよび拡張コードの更新をお願いいたします。 | ||
| 27行目: | 27行目: | ||
* 拙作ですがアイコンファイル (テキスト整形.ico) を同梱してあります。Mery 2.4.7 以降の場合、マクロ (テキスト整形.js) と同じフォルダに、Mery 2.4.6 以前の場合、Mery.exe と同じフォルダに、アイコンファイルを配置しておくとツールバーにアイコンが読み込まれます。 | * 拙作ですがアイコンファイル (テキスト整形.ico) を同梱してあります。Mery 2.4.7 以降の場合、マクロ (テキスト整形.js) と同じフォルダに、Mery 2.4.6 以前の場合、Mery.exe と同じフォルダに、アイコンファイルを配置しておくとツールバーにアイコンが読み込まれます。 | ||
== | == 変更履歴 == | ||
<code style="background:#fe0;">//2019 | <code style="background:#fe0;">//2019-12-21</code> でページ内検索すると、その日付で更新されたコマンドを検索できます。 | ||
<div style="height:40em; overflow:auto; border:1px dashed #999;"> | <div style="height:40em; overflow:auto; border:1px dashed #999;"> | ||
* 1.3.0 (2019-12-21) | |||
* 追加 - 全角仮名+濁点を合成 | ** 追加 - 全角仮名+濁点を合成 | ||
* 改名 - 行頭に連番挿入 (#/Z) | ** 改名 - 行頭に連番挿入 (#/Z) | ||
** 「#/Σ」→「#/ | *** 「#/Σ」→「#/Z」に変更 | ||
* 変更 - Base64エンコード/デコード | ** 変更 - Base64エンコード/デコード | ||
** 変数名を asc, b64, A, B → bin, asc, B, A | *** 変数名を asc, b64, A, B → bin, asc, B, A に変更 | ||
*** 関数 btoa() の由来 binary to ascii(=Base64) | **** 関数 btoa() の由来 binary to ascii(=Base64) に倣った | ||
* 1.2.9 (2019-06-01) | |||
* <b style="color:#c00;">仕様変更 - | ** <b style="color:#c00;">仕様変更 - 戻り値により選択範囲の置換・再選択を制御するようにした</b> | ||
* <b style="color:#c00;">仕様変更 - [[#コマンド|コマンドの書式]] | ** <b style="color:#c00;">仕様変更 - [[#コマンド|コマンドの書式]]を変更</b> | ||
** マクロ「[[テキスト変換]]」の第2引数を復活。モード F | *** マクロ「[[テキスト変換]]」の第2引数を復活。モード F は第2引数利用に変更 | ||
** モードを廃止し、オプションに変更。モード RS はオプション L | *** モードを廃止し、オプションに変更。モード RS はオプション L に変更 | ||
** 実行に範囲選択/クリップボードを要求するコマンドにオプション s/c | *** 実行に範囲選択/クリップボードを要求するコマンドにオプション s/c を設定 | ||
* <b>仕様変更 - メニュー作成処理を変更。</b>falsy | ** <b>仕様変更 - メニュー作成処理を変更。</b>falsy な要素があるとループ終了 | ||
* <b>コード整理 - 第2引数追加に伴い、引数名を a → _ と $ | ** <b>コード整理 - 第2引数追加に伴い、引数名を a → _ と $ に変更</b> | ||
* <b>コード整理 - | ** <b>コード整理 - 不使用の引数は極力省略するようにした</b> | ||
* 改名 - ★行頭/行末に貼り付け ¦ 行頭/行末から数文字削除 | ** 改名 - ★行頭/行末に貼り付け ¦ 行頭/行末から数文字削除 | ||
** | *** 「各行~」を除去 | ||
* 改名 - ★行頭/行末に挿入 | ** 改名 - ★行頭/行末に挿入 | ||
** | *** 「各行~」を除去。「文字列付加」→「挿入」に変更 | ||
* 改名 - 各行先頭/末尾に挿入 ¦ 行頭に連番挿入 ¦ 行末に<br>を挿入 ¦ ★行頭 // を挿入/削除 | ** 改名 - 各行先頭/末尾に挿入 ¦ 行頭に連番挿入 ¦ 行末に<br>を挿入 ¦ ★行頭 // を挿入/削除 | ||
** | *** 「(文字列)付加」→「挿入」に変更 | ||
* 変更 - 複製貼り付け ¦ ★行頭/行末に挿入 ¦ 各行先頭/末尾に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 ¦ 行頭/行末から数文字削除 | ** 変更 - 複製貼り付け ¦ ★行頭/行末に挿入 ¦ 各行先頭/末尾に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 ¦ 行頭/行末から数文字削除 | ||
** 入力判定を中止条件 → | *** 入力判定を中止条件 → 実行条件に変更 | ||
** 戻り値の仕様を利用し、中止時は Quit() → 戻り値なし (undefined) | *** 戻り値の仕様を利用し、中止時は Quit() → 戻り値なし (undefined) に変更 | ||
* 修正 - 複製貼り付け ¦ 行頭/行末から数文字削除 | ** 修正 - 複製貼り付け ¦ 行頭/行末から数文字削除 | ||
** キャンセルまたは数字以外を入力した場合、正常に中止できていないのを修正(NaN<1 は | *** キャンセルまたは数字以外を入力した場合、正常に中止できていないのを修正(NaN<1 は false) | ||
* 変更 - ★数値参照を文字に変換 | ** 変更 - ★数値参照を文字に変換 | ||
** 正規表現を <code>/&#([0-9]{1,7});|&#[Xx]([0-9A-Fa-f]{1,6});/g</code> → <code>/&#(?:([0-9]{1,7})|x([0-9a-f]{1,6}));/gi</code> | *** 正規表現を <code>/&#([0-9]{1,7});|&#[Xx]([0-9A-Fa-f]{1,6});/g</code> → <code>/&#(?:([0-9]{1,7})|x([0-9a-f]{1,6}));/gi</code> に短縮 | ||
* 変更 - 挿入 Confirm(|) | ** 変更 - 挿入 Confirm(|) | ||
** | *** 戻り値の仕様を利用したものに変更 | ||
* 変更 - Base64エンコード/デコード | ** 変更 - Base64エンコード/デコード | ||
** 引数名を txt → _ | *** 引数名を txt → _ に統一。変数名を変更 | ||
* 追加 - ★このマクロを編集 ¦ 連番を出力 ¦ 文字数カウント(空白は除く) ¦ ステータスバーの表示をコピー ¦ 行を文字数順並べ ¦ 数行毎に/数行一組で逆順並べ ¦ 空行毎に/空行一組で逆順並べ ¦ 指定見出しで逆順並べ | ** 追加 - ★このマクロを編集 ¦ 連番を出力 ¦ 文字数カウント(空白は除く) ¦ ステータスバーの表示をコピー ¦ 行を文字数順並べ ¦ 数行毎に/数行一組で逆順並べ ¦ 空行毎に/空行一組で逆順並べ ¦ 指定見出しで逆順並べ | ||
* 変更 - 総字行数カウント | ** 変更 - 総字行数カウント | ||
** GetLines() → GetLines(meGetLineView) | *** GetLines() → GetLines(meGetLineView) に変更(引数を明示) | ||
** | *** 符号点数&論理行数版を削除 | ||
* 変更 - 選択範囲を eval で評価 ¦ 選択文字列を検索 ¦ 選択文字列をすべて削除 | ** 変更 - 選択範囲を eval で評価 ¦ 選択文字列を検索 ¦ 選択文字列をすべて削除 | ||
** オプション s | *** オプション s の設定に伴い、選択判定を削除 | ||
* 変更 - 拡張コード テンプレート | ** 変更 - 拡張コード テンプレート | ||
** | *** 仕様変更に伴う改訂 | ||
** | *** サブメニューは、挿入後にメニュー名を選択するようにした | ||
* 1.2.8 (2019-05-01) | |||
* 削除 - 大文字/小文字に変換 ¦ 半角/全角に変換 | ** 削除 - 大文字/小文字に変換 ¦ 半角/全角に変換 | ||
** Mery | *** Mery 側のメソッドを使う一例として掲載していたが、結構かと判断 | ||
* 削除 - 行を昇順/降順並べ(UTF-16) | ** 削除 - 行を昇順/降順並べ(UTF-16) | ||
* 改名 - \x{hex} エンコード/デコード | ** 改名 - \x{hex} エンコード/デコード | ||
** | *** コマンド名のエスケープミスを修正 | ||
* 改名 - 拡張コード テンプレート | ** 改名 - 拡張コード テンプレート | ||
** | *** 「コマンド~」→「拡張コード~」に変更 | ||
* 1.2.7 (2018-01-15) | |||
* 削除 - ☆インデント(半角空白2個) | ** 削除 - ☆インデント(半角空白2個) | ||
* スターター追加 - ★行を昇順/降順並べ(Unicode) ¦ ★行を逆順並べ | ** スターター追加 - ★行を昇順/降順並べ(Unicode) ¦ ★行を逆順並べ | ||
* 追加 - CJK互換漢字を検索 | ** 追加 - CJK互換漢字を検索 | ||
* 修正 - Base64デコード | ** 修正 - Base64デコード | ||
** 最大50字ずつ処理する箇所で、異常なデータ 0xF8~FF | *** 最大50字ずつ処理する箇所で、異常なデータ 0xF8~FF をスルーしていたのを改修 | ||
* 修正 - 挿入 Confirm(|) | ** 修正 - 挿入 Confirm(|) | ||
** 折り返しが発生した場合、カーソル位置がズレる不具合を修正(カーソル移動を CharLeft(false,移動量) → SetActivePos(GetActivePos()-移動量) | *** 折り返しが発生した場合、カーソル位置がズレる不具合を修正(カーソル移動を CharLeft(false,移動量) → SetActivePos(GetActivePos()-移動量) に変更) | ||
* 変更 - ★重複行を単一化 ¦ 重複する/しない行を抽出 | ** 変更 - ★重複行を単一化 ¦ 重複する/しない行を抽出 | ||
** <code>for(var i=0,n=a.length;i<n;i++)</code> → <code>for(var i=0;i<a.length;i++)</code> | *** <code>for(var i=0,n=a.length;i<n;i++)</code> → <code>for(var i=0;i<a.length;i++)</code> に単純化 | ||
* 1.2.6 (2017-06-25) | |||
* <b>仕様変更 - | ** <b>仕様変更 - アイコンファイルに24x24・32x32・48x48の画像を追加</b> | ||
* <b style="color:#c00;">仕様変更 - <samp>replaceBatch</samp> メソッドで配列先頭/ | ** <b style="color:#c00;">仕様変更 - <samp>replaceBatch</samp> メソッドで配列先頭/末尾のコンマを許容するようにした</b> | ||
** 例> <code><i>String</i>.replaceBatch([ <b style="background:#fcc;">,</b>[省略],[省略],[省略]<b style="background:#fcc;">,</b> ])</code> | *** 例> <code><i>String</i>.replaceBatch([ <b style="background:#fcc;">,</b>[省略],[省略],[省略]<b style="background:#fcc;">,</b> ])</code> | ||
* コード整理 - | ** コード整理 - 基本コードを改訂 | ||
* 追加 - 行を昇順/降順並べ(Unicode) ¦ ★!?を半角/全角に整形 ¦ 空白行の空白を除去 ¦ 行頭/行末から数文字削除 ¦ 重複する/しない行を抽出 ¦ 表外漢字→代替 | ** 追加 - 行を昇順/降順並べ(Unicode) ¦ ★!?を半角/全角に整形 ¦ 空白行の空白を除去 ¦ 行頭/行末から数文字削除 ¦ 重複する/しない行を抽出 ¦ 表外漢字→代替 | ||
* 改名 - 行を昇順/降順並べ(UTF-16) ¦ 行を逆順並べ ¦ 文字を逆順並べ | ** 改名 - 行を昇順/降順並べ(UTF-16) ¦ 行を逆順並べ ¦ 文字を逆順並べ | ||
** 「~の並べ替え(○順) | *** 「~の並べ替え(○順)」→「~を○順並べ」に変更 | ||
** 従来の「行を昇順/降順並べ(Unicode)」は (UTF-16) | *** 従来の「行を昇順/降順並べ(Unicode)」は (UTF-16) に訂正 | ||
* 改名 - ★重複行を単一化 ¦ ★連続する重複行を単一化 | ** 改名 - ★重複行を単一化 ¦ ★連続する重複行を単一化 | ||
** | *** 「~を削除」→「~を単一化」に変更 | ||
* 修正 - ★重複行を単一化 | ** 修正 - ★重複行を単一化 | ||
** 下記の7行を削除してしまう不具合を修正(重複の判定は Object.prototype.hasOwnProperty.call() | *** 下記の7行を削除してしまう不具合を修正(重複の判定は Object.prototype.hasOwnProperty.call() で行うようにした) | ||
** 「constructor」「hasOwnProperty」「isPrototypeOf」「propertyIsEnumerable」「toLocaleString」「toString」「valueOf」 | *** 「constructor」「hasOwnProperty」「isPrototypeOf」「propertyIsEnumerable」「toLocaleString」「toString」「valueOf」 | ||
* 変更 - ★全角ダッシュ(――)に整形 | ** 変更 - ★全角ダッシュ(――)に整形 | ||
** 罫線(横) ── | *** 罫線(横) ── を変換対象から除外 | ||
* 変更 - ★数値参照を文字に変換 ¦ ★16→10進数 ¦ &#xHEX; デコード | ** 変更 - ★数値参照を文字に変換 ¦ ★16→10進数 ¦ &#xHEX; デコード | ||
** 0Xff, &#Xff; など X | *** 0Xff, &#Xff; など X が大文字の場合に対応 | ||
* 変更 - 文字を逆順並べ ¦ 文字をシャッフル ¦ \uHHHH, \u4H \U8H, \x{hex}, &#dec;, &#xHEX; エンコード | ** 変更 - 文字を逆順並べ ¦ 文字をシャッフル ¦ \uHHHH, \u4H \U8H, \x{hex}, &#dec;, &#xHEX; エンコード | ||
** 正規表現を . → [^\n] | *** 正規表現を . → [^\n] に統一 | ||
* 変更 - 文字を逆順並べ ¦ 文字をシャッフル | ** 変更 - 文字を逆順並べ ¦ 文字をシャッフル | ||
** UAX #29 に一部対応し、\p{Zl}, {Zp}, {Cc}, U+00AD, FEFF | *** UAX #29 に一部対応し、\p{Zl}, {Zp}, {Cc}, U+00AD, FEFF は結合不可にした | ||
* 変更 - 選択文字列を検索 | ** 変更 - 選択文字列を検索 | ||
** | *** カーソル位置・スクロール位置を移動しないようにした | ||
* 変更 - 選択文字列を検索 ¦ 選択文字列をすべて削除 ¦ <samp>replaceBatch</samp> メソッド | ** 変更 - 選択文字列を検索 ¦ 選択文字列をすべて削除 ¦ <samp>replaceBatch</samp> メソッド | ||
** 特殊文字のエスケープ処理を <code>/([$()*+.?[\\\]^{|}])/g,"\\$1"</code> → <code>/[$()*+.?\[\\\]^{|}]/g,"\\$&"</code> | *** 特殊文字のエスケープ処理を <code>/([$()*+.?[\\\]^{|}])/g,"\\$1"</code> → <code>/[$()*+.?\[\\\]^{|}]/g,"\\$&"</code> に統一 | ||
* 変更 - 拡張コード テンプレート(分割) | ** 変更 - 拡張コード テンプレート(分割) | ||
** | *** 配列先頭のコンマの仕様に対応(末尾は実質対応済) | ||
* 1.2.5 (2017-05-28) | |||
* 追加 - 結合文字列を検索 | ** 追加 - 結合文字列を検索 | ||
* 修正 - CP932依存文字を検索 | ** 修正 - CP932依存文字を検索 | ||
** Wiki が 神 → 神 などの正規化(NFC) | *** Wiki が 神 → 神 などの正規化(NFC)を行う影響で、漢字22字が意図どおりに検索されないミスを修正 | ||
* 変更 - ASCII文字, 半角カナ, 全角英数, CJK漢字, ひらがな, カタカナを単語検索 | ** 変更 - ASCII文字, 半角カナ, 全角英数, CJK漢字, ひらがな, カタカナを単語検索 | ||
** 変数を使用せず、正規表現 \g<名前> | *** 変数を使用せず、正規表現 \g<名前> を使用する形式に統一 | ||
* 1.2.4 (2015-12-26) | |||
* <b style="color:#c00;">仕様変更 - アイコンの指定先を "My Macros\テキスト整形.ico" → "テキスト整形.ico" | ** <b style="color:#c00;">仕様変更 - アイコンの指定先を "My Macros\テキスト整形.ico" → "テキスト整形.ico" に変更</b> | ||
* 変更 - マクロフォルダを開く | ** 変更 - マクロフォルダを開く | ||
** 「My Macros | *** 「My Macros フォルダを開く」→「マクロフォルダを開く」に変更 | ||
** 「テキスト整形」マクロがあるフォルダを開くようにした(Mery 2.4.7 での Macros | *** 「テキスト整形」マクロがあるフォルダを開くようにした(Mery 2.4.7 での Macros フォルダ改名に対処) | ||
* 1.2.3 (2015-09-30) | |||
* 追加 - CP932依存文字を検索 ¦ サロゲートペアを検索 ¦ 行頭に連番挿入 (#) ¦ 行頭に連番挿入 (#/Z) ¦ 行頭に連番挿入 (0#) ¦ \u4H \U8H エンコード/デコード | ** 追加 - CP932依存文字を検索 ¦ サロゲートペアを検索 ¦ 行頭に連番挿入 (#) ¦ 行頭に連番挿入 (#/Z) ¦ 行頭に連番挿入 (0#) ¦ \u4H \U8H エンコード/デコード | ||
* 修正 - ひらがなを単語検索 ¦ カタカナを単語検索 | ** 修正 - ひらがなを単語検索 ¦ カタカナを単語検索 | ||
** | *** 選択範囲が記号の前後で途切れる問題に対処(記号2連続まで対応) | ||
* 変更 - 青空文庫 ルビを除去 | ** 変更 - 青空文庫 ルビを除去 | ||
** 正規表現を [^《]+ → [^《\n]+ | *** 正規表現を [^《]+ → [^《\n]+ に変更し、改行を跨がないようにした | ||
* 変更 - ★HTMLタグを除去 | ** 変更 - ★HTMLタグを除去 | ||
** 正規表現を .*? → [^<i>文字</i>]* | *** 正規表現を .*? → [^<i>文字</i>]* に変更し、改行を跨ぐようにした | ||
* 変更 - 文字を逆順並べ ¦ 文字をシャッフル | ** 変更 - 文字を逆順並べ ¦ 文字をシャッフル | ||
** 処理方法を split() → match() に変更。対応文字に結合文字 (U+1AB0~FF, 1DC0~FF, 20D0~FF, FE20~F)、制御文字 (U+200C~D)、絵文字の国旗 (U+1F1E6~FF)、肌色指定 (U+1F3FB~F) | *** 処理方法を split() → match() に変更。対応文字に結合文字 (U+1AB0~FF, 1DC0~FF, 20D0~FF, FE20~F)、制御文字 (U+200C~D)、絵文字の国旗 (U+1F1E6~FF)、肌色指定 (U+1F3FB~F) を追加 | ||
* 改名 - \uHHHH, \x{hex}, &#dec;, &#xHEX; エンコード/デコード | ** 改名 - \uHHHH, \x{hex}, &#dec;, &#xHEX; エンコード/デコード | ||
** 「Unicode 文字 → ○○」→「○○ | *** 「Unicode 文字 → ○○」→「○○ エンコード」に変更 | ||
** 「Unicode ○○ → 文字」→「○○ | *** 「Unicode ○○ → 文字」→「○○ デコード」に変更 | ||
* 1.2.2 (2015-03-26) | |||
* 変更 - CJK漢字を単語検索 | ** 変更 - CJK漢字を単語検索 | ||
** | *** 異体字セレクタを考慮するようにした(ただし組合せが適正かは考慮しえない) | ||
* 変更 - 複製貼り付け | ** 変更 - 複製貼り付け | ||
** 処理中止の条件を 非数字(NaN) or 1 未満 → クリップボードがカラ or 1 未満 | *** 処理中止の条件を 非数字(NaN) or 1 未満 → クリップボードがカラ or 1 未満 に変更 | ||
* 1.2.1 (2015-03-14) | |||
* <b style="color:#c00;">仕様変更 - モード R/RS | ** <b style="color:#c00;">仕様変更 - モード R/RS 実行後、処理した範囲を選択し直すようにした</b> | ||
* <b style="color:#c00;">仕様変更 - モード RM を廃止。</b>既存コマンドはモード RS | ** <b style="color:#c00;">仕様変更 - モード RM を廃止。</b>既存コマンドはモード RS に移行 | ||
** ★行頭 // を挿入/削除 ¦ ★インデント(半角空白2個) ¦ ★空白行を削除 ¦ ★行頭/行末に貼り付け ¦ ★行頭/行末に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 | *** ★行頭 // を挿入/削除 ¦ ★インデント(半角空白2個) ¦ ★空白行を削除 ¦ ★行頭/行末に貼り付け ¦ ★行頭/行末に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 | ||
* <b style="color:#c00;">仕様変更 - モード CR を廃止し、<code><i>String</i>.replaceBatch</code> メソッドを追加。</b>既存コマンドは <samp>replaceBatch</samp> | ** <b style="color:#c00;">仕様変更 - モード CR を廃止し、<code><i>String</i>.replaceBatch</code> メソッドを追加。</b>既存コマンドは <samp>replaceBatch</samp> メソッド利用に移行 | ||
** ★連続する!?を整形 ¦ ★実体参照 &"<> → &xxx; ¦ ★実体参照 &xxx; → ␣><"& ¦ ★半角カナ→全角 ¦ ★全角カナ→半角 ¦ 標準変換 | *** ★連続する!?を整形 ¦ ★実体参照 &"<> → &xxx; ¦ ★実体参照 &xxx; → ␣><"& ¦ ★半角カナ→全角 ¦ ★全角カナ→半角 ¦ 標準変換 | ||
* <b>コード整理 - | ** <b>コード整理 - コマンド各々に更新年月日を付けるようにした</b> | ||
* スターター除外 - ☆検索強調をすべて解除 | ** スターター除外 - ☆検索強調をすべて解除 | ||
* 削除 - ☆全角英数を検索 ¦ ☆半角カナを検索 ¦ ☆CJK漢字を検索 | ** 削除 - ☆全角英数を検索 ¦ ☆半角カナを検索 ¦ ☆CJK漢字を検索 | ||
* 追加 - ASCII文字を単語検索 ¦ 半角カナを単語検索 ¦ 全角英数を単語検索 ¦ CJK漢字を単語検索 ¦ ひらがなを単語検索 ¦ カタカナを単語検索 ¦ 検索結果カウント ¦ 総字行数カウント | ** 追加 - ASCII文字を単語検索 ¦ 半角カナを単語検索 ¦ 全角英数を単語検索 ¦ CJK漢字を単語検索 ¦ ひらがなを単語検索 ¦ カタカナを単語検索 ¦ 検索結果カウント ¦ 総字行数カウント | ||
* 変更 - 編集中のファイルのパスをコピー ¦ 編集中の全ファイルのパスをコピー | ** 変更 - 編集中のファイルのパスをコピー ¦ 編集中の全ファイルのパスをコピー | ||
** パスが存在しない場合の名前を、無題 → <無題> | *** パスが存在しない場合の名前を、無題 → <無題> に変更 | ||
* 変更 - ★数値参照を文字に変換 ¦ \x{hex}, &#dec;, &#xHEX; デコード | ** 変更 - ★数値参照を文字に変換 ¦ \x{hex}, &#dec;, &#xHEX; デコード | ||
** サロゲートペアの計算を + → | に変更し、不要な括弧を除去(演算子の優先順が + - → >> → & → | | *** サロゲートペアの計算を + → | に変更し、不要な括弧を除去(演算子の優先順が + - → >> → & → | である事による) | ||
* 変更 - Base64エンコード/デコード | ** 変更 - Base64エンコード/デコード | ||
** | *** 不要な括弧を除去(同上、演算子の優先順による) | ||
* 変更 - 拡張コード テンプレート | ** 変更 - 拡張コード テンプレート | ||
** | *** 仕様変更に伴う改訂 | ||
** | *** コマンドおよびセパレーターは、表示行頭に挿入するようにした | ||
* 1.2.0 (2015-02-14) | |||
* <b style="color:#c00;">仕様修正 - モード RS/RM | ** <b style="color:#c00;">仕様修正 - モード RS/RM で、矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正</b> | ||
* <b>コード整理 - 文字入力など追加操作を求めるコマンドは、名称末尾に目印 ... | ** <b>コード整理 - 文字入力など追加操作を求めるコマンドは、名称末尾に目印 ... を付けた</b> | ||
** 複製貼り付け ¦ ★行頭/行末に挿入 ¦ 各行先頭/末尾に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 | *** 複製貼り付け ¦ ★行頭/行末に挿入 ¦ 各行先頭/末尾に挿入 ¦ ★入力文字列を含む/含まない行を削除 ¦ 正規表現に一致する/しない行を削除 | ||
* 削除 - 丸数字 ⑳ → (20) ¦ 丸数字 (20) → ⑳ | ** 削除 - 丸数字 ⑳ → (20) ¦ 丸数字 (20) → ⑳ | ||
* 追加 - 行末に<br>を挿入 ¦ <br>を改行に変換 ¦ ★行頭/行末の空白を除去 ¦ 空白行を減量 ¦ 重複行を単一化(空白行は除く) ¦ ★連続する重複行を単一化 ¦ 文字のシャッフル | ** 追加 - 行末に<br>を挿入 ¦ <br>を改行に変換 ¦ ★行頭/行末の空白を除去 ¦ 空白行を減量 ¦ 重複行を単一化(空白行は除く) ¦ ★連続する重複行を単一化 ¦ 文字のシャッフル | ||
* 修正 - 各行先頭/末尾に挿入 | ** 修正 - 各行先頭/末尾に挿入 | ||
** | *** 正規表現が意味的に不適切だったのを修正 | ||
* 変更 - 空白行を圧縮 | ** 変更 - 空白行を圧縮 | ||
** モード R → RS | *** モード R → RS に。空白行内の空白を除去してから改行を処理するように変更 | ||
* 変更 - 文字を逆順並べ | ** 変更 - 文字を逆順並べ | ||
** サロゲートペアの対処方法を変更。結合文字の一部 (U+0300~6F, 3099~A) | *** サロゲートペアの対処方法を変更。結合文字の一部 (U+0300~6F, 3099~A) および異体字セレクタに対応した | ||
* 変更 - 2進接頭辞換算 | ** 変更 - 2進接頭辞換算 | ||
** 正規表現を <code>[0-9]+(,?[0-9]{3})+(\.[0-9]+)?</code> → <code>[0-9]+(,?[0-9]{3})+</code> | *** 正規表現を <code>[0-9]+(,?[0-9]{3})+(\.[0-9]+)?</code> → <code>[0-9]+(,?[0-9]{3})+</code> に変更(小数は非対応とした) | ||
* 変更 - Base64デコード | ** 変更 - Base64デコード | ||
** JScript 5.x の decodeURIComponent() | *** JScript 5.x の decodeURIComponent() は字数が多すぎると能率が悪くなるようなので、最大50字ずつ処理するようにした(高速化) | ||
* 1.1.9 (2014-10-12) | |||
* スターター除外 - ☆正規表現に一致する/しない行を削除 | ** スターター除外 - ☆正規表現に一致する/しない行を削除 | ||
** Mery (鬼車) と JScript (ECMAScript) | *** Mery (鬼車) と JScript (ECMAScript) では正規表現の仕様が異なり、意図しない結果を招く怖れがあるため | ||
* スターター追加 - ★数値参照 &#dec; に変換 ¦ ★数値参照 &#xHEX; に変換 | ** スターター追加 - ★数値参照 &#dec; に変換 ¦ ★数値参照 &#xHEX; に変換 | ||
* 追加 - ★数値参照を文字に変換 ¦ 行を逆順並べ ¦ 行をシャッフル ¦ &#xHEX; エンコード/デコード | ** 追加 - ★数値参照を文字に変換 ¦ 行を逆順並べ ¦ 行をシャッフル ¦ &#xHEX; エンコード/デコード | ||
* 修正 - 選択文字列を検索 | ** 修正 - 選択文字列を検索 | ||
** | *** 引数不一致により動作しないミスを修正 | ||
* 修正 - 編集中の全ファイルのパスをコピー ¦ ★検索強調をすべて解除 | ** 修正 - 編集中の全ファイルのパスをコピー ¦ ★検索強調をすべて解除 | ||
** 対象範囲を 同ウィンドウ内の全文書 → 全ウィンドウの全文書 | *** 対象範囲を 同ウィンドウ内の全文書 → 全ウィンドウの全文書 に改修 | ||
* 変更 - 複製貼り付け | ** 変更 - 複製貼り付け | ||
** 処理方法を for → while に変更。処理中止の条件を 未入力 → 非数字(NaN) or 1 | *** 処理方法を for → while に変更。処理中止の条件を 未入力 → 非数字(NaN) or 1 未満に変更 | ||
* 変更 - \x{hex}, &#dec; エンコード | ** 変更 - \x{hex}, &#dec; エンコード | ||
** 処理方法を 配列連結 join("") → 文字列連結 += | *** 処理方法を 配列連結 join("") → 文字列連結 += に変更 | ||
* 変更 - \x{hex}, &#dec; デコード | ** 変更 - \x{hex}, &#dec; デコード | ||
** 下位サロゲートの計算を (n-0x10000&0x3FF) → (n&0x3FF) | *** 下位サロゲートの計算を (n-0x10000&0x3FF) → (n&0x3FF) に短縮 | ||
* 1.1.8 (2014-07-27) | |||
* 修正 - Base64デコード | ** 修正 - Base64デコード | ||
** 終端の余分な [NUL] | *** 終端の余分な [NUL] を除去する処理が手抜きだったのを修正 | ||
* 1.1.7 (2014-05-31) | |||
* 削除 - Base64エンコード(Unicode) | ** 削除 - Base64エンコード(Unicode) | ||
** Mery の「Base64デコード」機能と同じ方式の Base64エンコード(UTF-8) | *** Mery の「Base64デコード」機能と同じ方式の Base64エンコード(UTF-8) に差し替え | ||
* 追加 - Base64エンコード/デコード(UTF-8) | ** 追加 - Base64エンコード/デコード(UTF-8) | ||
* 変更 - ★数値を3桁,区切りに | ** 変更 - ★数値を3桁,区切りに | ||
** | *** 数字列を抽出して処理するように変更(高速化) | ||
* 変更 - ★数値を3桁,区切りに ¦ 丸数字 (20) → ⑳ ¦ ★10→16進数 ¦ 2進接頭辞換算 | ** 変更 - ★数値を3桁,区切りに ¦ 丸数字 (20) → ⑳ ¦ ★10→16進数 ¦ 2進接頭辞換算 | ||
** 正規表現を \d → [0-9] | *** 正規表現を \d → [0-9] に統一 | ||
* 修正 - 拡張コード テンプレート(モード CR 交換/分割) | ** 修正 - 拡張コード テンプレート(モード CR 交換/分割) | ||
** エスケープ文字 \ | *** エスケープ文字 \ をより正確に判定できる正規表現に改修 | ||
* 1.1.6 (2014-05-24) | |||
* 修正 - 各行末尾に挿入 | ** 修正 - 各行末尾に挿入 | ||
** | *** 選択範囲の次行先頭にも挿入してしまう問題に対処 | ||
* 変更 - 複製貼り付け | ** 変更 - 複製貼り付け | ||
** | *** クリップボードの内容を変数に格納しておくように変更(高速化) | ||
* 変更 - 複製貼り付け ¦ 各行先頭/末尾に挿入 | ** 変更 - 複製貼り付け ¦ 各行先頭/末尾に挿入 | ||
** Prompt() 関連の処理を単純化(モード RM | *** Prompt() 関連の処理を単純化(モード RM 以外では冗長だった) | ||
* 1.1.5 (2014-05-22) | |||
* 追加 - 2進接頭辞換算 | ** 追加 - 2進接頭辞換算 | ||
* 変更 - \x{hex}, &#dec; デコード | ** 変更 - \x{hex}, &#dec; デコード | ||
** サロゲートペアの String.fromCharCode() | *** サロゲートペアの String.fromCharCode() の引数を複数指定に改修、ビット演算に一部変更 | ||
* 1.1.4 (2014-05-16) | |||
* 変更 - \x{hex}, &#dec; エンコード | ** 変更 - \x{hex}, &#dec; エンコード | ||
** 処理方法を replace(for ループ) | *** 処理方法を replace(for ループ) に統一 | ||
* 1.1.3 (2014-04-27) | |||
* 追加 - &#dec; エンコード/デコード | ** 追加 - &#dec; エンコード/デコード | ||
* 1.1.2 (2014-03-14) | |||
* 追加 - 青空文庫 ルビを除去 ¦ 青空文庫 注記を除去 | ** 追加 - 青空文庫 ルビを除去 ¦ 青空文庫 注記を除去 | ||
* 1.1.1 (2014-03-08) | |||
* 追加 - 選択文字列を検索 ¦ 選択文字列をすべて削除 | ** 追加 - 選択文字列を検索 ¦ 選択文字列をすべて削除 | ||
* 変更 - ★全角英数を検索 ¦ ★半角カナを検索 ¦ ★CJK漢字を検索 | ** 変更 - ★全角英数を検索 ¦ ★半角カナを検索 ¦ ★CJK漢字を検索 | ||
** 検索方向を 前 → 次 | *** 検索方向を 前 → 次 に変更。念の為「大文字と小文字を区別」フラグを追加 | ||
* 1.1.0 (2014-03-01) | |||
* 追加 - ★連続する!?を整形 ¦ ★全角ダッシュ(――)に整形 | ** 追加 - ★連続する!?を整形 ¦ ★全角ダッシュ(――)に整形 | ||
* 変更 - ★括弧前の句読点を除去 | ** 変更 - ★括弧前の句読点を除去 | ||
** 全角コンマ , /全角ピリオド . | *** 全角コンマ , /全角ピリオド . を除去対象に追加 | ||
* 変更 - ★三点リーダー(……)に整形 | ** 変更 - ★三点リーダー(……)に整形 | ||
** 全角コンマ , /全角ピリオド . /半角中黒 ・ /三点リーダー … /二点リーダー ‥ | *** 全角コンマ , /全角ピリオド . /半角中黒 ・ /三点リーダー … /二点リーダー ‥ を変換対象に追加 | ||
* 変更 - マクロフォルダを開く | ** 変更 - マクロフォルダを開く | ||
** 処理方法を WScript.Shell.Run("explorer") → Shell.Application.Explore() | *** 処理方法を WScript.Shell.Run("explorer") → Shell.Application.Explore() に変更 | ||
* 1.0.9 (2014-02-22) | |||
* 追加 - 丸数字 ⑳ → (20) ¦ 丸数字 (20) → ⑳ | ** 追加 - 丸数字 ⑳ → (20) ¦ 丸数字 (20) → ⑳ | ||
* 変更 - 文字を逆順並べ ¦ \uHHHH, \x{hex} エンコード | ** 変更 - 文字を逆順並べ ¦ \uHHHH, \x{hex} エンコード | ||
** 処理方法を for ループ → replace() | *** 処理方法を for ループ → replace() に変更(字数削減) | ||
* 変更 - 拡張コード テンプレート | ** 変更 - 拡張コード テンプレート | ||
** モード CR 作成補助コマンドを追加。モード CR | *** モード CR 作成補助コマンドを追加。モード CR テンプレートを変更 | ||
* 1.0.8 (2014-02-17) | |||
* 修正 - ★行頭/行末に貼り付け | ** 修正 - ★行頭/行末に貼り付け | ||
** | *** クリップボード終端の改行文字を除去する正規表現を修正 \r\n|\r|\n$ → (\r\n|\r|\n)$ | ||
* 1.0.7 (2014-02-16) | |||
* <b style="color:#c00;">仕様修正 - モード CR | ** <b style="color:#c00;">仕様修正 - モード CR で、正規表現の特殊文字があると誤動作する不具合を修正</b> | ||
* <b style="color:#c00;">仕様変更 - モード CR で、正規表現 (JScript) | ** <b style="color:#c00;">仕様変更 - モード CR で、正規表現 (JScript) による検索置換に対応</b> | ||
* コード整理 - | ** コード整理 - コメントアウトしていた基本コードを削除 | ||
* コード整理 - | ** コード整理 - 下記の6カテゴリを3カテゴリに統合。コマンドの名称や配置を見直した | ||
** (空白の追加 + 各行に追加) (空白の削除 + 行の削除) (数値の変換 + 文字種変換) | *** (空白の追加 + 各行に追加) (空白の削除 + 行の削除) (数値の変換 + 文字種変換) | ||
* スターター除外 - ☆標準変換 | ** スターター除外 - ☆標準変換 | ||
* 追加 - 複製貼り付け ¦ 文字を逆順並べ ¦ ★半角カナ→全角 ¦ ★全角カナ→半角 | ** 追加 - 複製貼り付け ¦ 文字を逆順並べ ¦ ★半角カナ→全角 ¦ ★全角カナ→半角 | ||
* 変更 - ★行頭/行末に貼り付け | ** 変更 - ★行頭/行末に貼り付け | ||
** | *** クリップボード終端の改行文字は除去するようにした(行切り取り・行コピーとの相性を考え) | ||
* 変更 - 拡張コード テンプレート | ** 変更 - 拡張コード テンプレート | ||
** モード CR | *** モード CR テンプレートを刷新 | ||
* 1.0.6 (2014-02-10) | |||
* スターター除外 - ☆空白行を圧縮 | ** スターター除外 - ☆空白行を圧縮 | ||
* 追加 - ★空白行を削除 ¦ \uHHHH デコード ¦ \x{hex} エンコード/デコード | ** 追加 - ★空白行を削除 ¦ \uHHHH デコード ¦ \x{hex} エンコード/デコード | ||
* 変更 - 挿入 Confirm(|) | ** 変更 - 挿入 Confirm(|) | ||
** 接尾辞の長さ(s.length) | *** 接尾辞の長さ(s.length)でカーソル移動量を決めるようにした | ||
* 1.0.5 (2014-02-01) | |||
* 追加 - \uHHHH エンコード | ** 追加 - \uHHHH エンコード | ||
* 変更 - ★全角かな→カナ ¦ ★全角カナ→かな | ** 変更 - ★全角かな→カナ ¦ ★全角カナ→かな | ||
** 踊り字(繰り返し記号) ゝゞヽヾ | *** 踊り字(繰り返し記号) ゝゞヽヾ を変換対象に追加 | ||
* 1.0.4 (2014-01-24) | |||
* 追加 - ★半角/全角の間を空ける ¦ ★半角英数/全角の間を空ける | ** 追加 - ★半角/全角の間を空ける ¦ ★半角英数/全角の間を空ける | ||
* 変更 - ★全角カナ→かな | ** 変更 - ★全角カナ→かな | ||
** ヴヵヶ は対象外とした(Shift_JIS | *** ヴヵヶ は対象外とした(Shift_JIS では保存できない文字のため) | ||
* 1.0.3 (2014-01-12) | |||
* <b>仕様変更 - | ** <b>仕様変更 - スターターパックにアイコンファイルを同梱</b> | ||
* 修正 - 編集中のファイルのパスをコピー ¦ 編集中の全ファイルのパスをコピー | ** 修正 - 編集中のファイルのパスをコピー ¦ 編集中の全ファイルのパスをコピー | ||
** 改行を LF → CR+LF | *** 改行を LF → CR+LF に変更し、メモ帳でも正しく改行されるようにした | ||
* 修正 - ★数値を3桁,区切りに | ** 修正 - ★数値を3桁,区切りに | ||
** | *** 小数点以下(ピリオド以降)は桁区切りしないようにした | ||
* 1.0.2 (2014-01-08) | |||
* <b style="color:#c00;">仕様変更 - | ** <b style="color:#c00;">仕様変更 - コマンド実行時、スクロール位置を記憶・復元しないように(コメントアウト)した</b> | ||
** 検索系コマンドと相性が悪く、Mery | *** 検索系コマンドと相性が悪く、Mery の検索機能と挙動が合っていないため | ||
* スターター追加 - ★CJK漢字を検索 ¦ ★検索強調をすべて解除 | ** スターター追加 - ★CJK漢字を検索 ¦ ★検索強調をすべて解除 | ||
* 追加 - ★全角英数を検索 ¦ ★半角カナを検索 | ** 追加 - ★全角英数を検索 ¦ ★半角カナを検索 | ||
* 修正 - ★16→10進数 | ** 修正 - ★16→10進数 | ||
** 16進数に使用しない英字 G~Z | *** 16進数に使用しない英字 G~Z を変換対象に含めていたミスを修正 | ||
* 1.0.1 (2013-12-30) | |||
* 追加 - 挿入 Confirm(|) ¦ ★数値を3桁,区切りに ¦ ★10→16進数 ¦ ★16→10進数 | ** 追加 - 挿入 Confirm(|) ¦ ★数値を3桁,区切りに ¦ ★10→16進数 ¦ ★16→10進数 | ||
* 修正 - My Macros フォルダを開く (現「マクロフォルダを開く」) | ** 修正 - My Macros フォルダを開く (現「マクロフォルダを開く」) | ||
** 「テキスト整形」マクロのあるフォルダではなく Mery.exe 直下の My Macros | *** 「テキスト整形」マクロのあるフォルダではなく Mery.exe 直下の My Macros フォルダを開くようにした | ||
* 1.0.0 (2013-09-15) | |||
* | ** 初版公開 | ||
</div> | </div> | ||
== 基本コード == | == 基本コード == | ||
<syntaxhighlight lang="javascript" | <syntaxhighlight lang="javascript" copy> | ||
//■テキスト整形 | //■テキスト整形 | ||
// 2013 | // 2013-09-15 - 2019-06-01 | ||
//■拡張コード:リスト | //■拡張コード:リスト | ||
| 425行目: | 425行目: | ||
;★地の文の行頭を字下げ | ;★地の文の行頭を字下げ | ||
:開き括弧類 <code>‘ “ ( 〔 [ { 〈 《 「 『 【</code> または 半角空白/全角空白/水平タブ/改行 <b style="color:#c00;">以外</b>の文字で始まる行を「地の文」とみなし、行頭に全角空白を挿入します。 | :開き括弧類 <code>‘ “ ( 〔 [ { 〈 《 「 『 【</code> または 半角空白/全角空白/水平タブ/改行 <b style="color:#c00;">以外</b>の文字で始まる行を「地の文」とみなし、行頭に全角空白を挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["地の文の行頭を字下げ","L",function(_){ //2015 | f.push(["地の文の行頭を字下げ","L",function(_){ //2015-02-14 | ||
return _.replace(/^([^‘“(〔[{〈《「『【 \t\n])/gm," $1") }]); | return _.replace(/^([^‘“(〔[{〈《「『【 \t\n])/gm," $1") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 432行目: | 432行目: | ||
;★括弧前の句読点を除去 | ;★括弧前の句読点を除去 | ||
:閉じ括弧類 <code>’ ” ) 〕 ] } 〉 》 」 』 】</code> の直前に句読点 <code>、 。 , .</code> がある場合、除去します。 | :閉じ括弧類 <code>’ ” ) 〕 ] } 〉 》 」 』 】</code> の直前に句読点 <code>、 。 , .</code> がある場合、除去します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["括弧前の句読点を除去","s",function(_){ //2014 | f.push(["括弧前の句読点を除去","s",function(_){ //2014-03-01 | ||
return _.replace(/[、。,.](?=[’”)〕]}〉》」』】])/g,"") }]); | return _.replace(/[、。,.](?=[’”)〕]}〉》」』】])/g,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 442行目: | 442行目: | ||
:※<b style="color:#c00;">半角文字</b>=ASCII文字+半角カナ、<b style="color:#c00;">全角文字</b>=それ以外の文字、を意味しています。 | :※<b style="color:#c00;">半角文字</b>=ASCII文字+半角カナ、<b style="color:#c00;">全角文字</b>=それ以外の文字、を意味しています。 | ||
:例> <span style="background:#bfdfff;">Wha<b style="color:#c00;">t</b>!?/あ<b style="color:#c00;">れ</b>!?</span> → What!?/あれ!?(※<b style="color:#c00;">赤字</b>が直前の文字) | :例> <span style="background:#bfdfff;">Wha<b style="color:#c00;">t</b>!?/あ<b style="color:#c00;">れ</b>!?</span> → What!?/あれ!?(※<b style="color:#c00;">赤字</b>が直前の文字) | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["!?を半角/全角に整形","s",function(_){ //2017 | f.push(["!?を半角/全角に整形","s",function(_){ //2017-06-25 | ||
return _.replace(/[!?!?]+/g,function(s,i,c){c=c.charAt(i-1); return (!c||c==="\n")? s: /[ -~。-゚]/.test(c)? s.replace(/!/g,"!").replace(/?/g,"?"): s.replace(/\!/g,"!").replace(/\?/g,"?")}) }]); | return _.replace(/[!?!?]+/g,function(s,i,c){c=c.charAt(i-1); return (!c||c==="\n")? s: /[ -~。-゚]/.test(c)? s.replace(/!/g,"!").replace(/?/g,"?"): s.replace(/\!/g,"!").replace(/\?/g,"?")}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 450行目: | 450行目: | ||
:2文字以上連続する感嘆符・疑問符を半角2文字に整形します。 | :2文字以上連続する感嘆符・疑問符を半角2文字に整形します。 | ||
:例> <span style="background:#bfdfff;">!!/!!?/?!!!/?!!!?</span> → !!/!?/?!/?? | :例> <span style="background:#bfdfff;">!!/!!?/?!!!/?!!!?</span> → !!/!?/?!/?? | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["連続する!?を整形","s",function(_){ //2015 | f.push(["連続する!?を整形","s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ [/[!!][!?!?]*[!!]/g,"!!"],[/[!!][!?!?]*[??]/g,"!?"],[/[??][!?!?]*[!!]/g,"?!"],[/[??][!?!?]*[??]/g,"??"] ]) }]); | return _.replaceBatch([ [/[!!][!?!?]*[!!]/g,"!!"],[/[!!][!?!?]*[??]/g,"!?"],[/[??][!?!?]*[!!]/g,"?!"],[/[??][!?!?]*[??]/g,"??"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 478行目: | 478行目: | ||
| 二点リーダー || ‥ || 0x8164 || U+2025 | | 二点リーダー || ‥ || 0x8164 || U+2025 | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["三点リーダー(……)に整形","s",function(_){ //2014 | f.push(["三点リーダー(……)に整形","s",function(_){ //2014-03-01 | ||
return _.replace(/、{3,}|。{3,}|,{3,}|.{3,}|・{3,}|・{3,}|…{1,}|‥{1,}/g,"……") }]); | return _.replace(/、{3,}|。{3,}|,{3,}|.{3,}|・{3,}|・{3,}|…{1,}|‥{1,}/g,"……") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 498行目: | 498行目: | ||
| 全角マイナス || -- || 0x817C || U+FF0D | | 全角マイナス || -- || 0x817C || U+FF0D | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["全角ダッシュ(――)に整形","s",function(_){ //2017 | f.push(["全角ダッシュ(――)に整形","s",function(_){ //2017-06-25 | ||
return _.replace(/ー{2,}|\u2014{2,}|―{2,}|-{2,}/g,"――") }]); | return _.replace(/ー{2,}|\u2014{2,}|―{2,}|-{2,}/g,"――") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 506行目: | 506行目: | ||
:<code>《</code> で始まり <code>》</code> で終わる箇所を除去します。ルビ開始位置を表す <code>|</code> がある場合、<code>|</code> も除去します。 | :<code>《</code> で始まり <code>》</code> で終わる箇所を除去します。ルビ開始位置を表す <code>|</code> がある場合、<code>|</code> も除去します。 | ||
:例> <span style="background:#bfdfff;">一応《いちおう》何時《いつ》もの/霧の|ロンドン警視庁《スコットランドヤード》</span> → 一応何時もの/霧のロンドン警視庁 | :例> <span style="background:#bfdfff;">一応《いちおう》何時《いつ》もの/霧の|ロンドン警視庁《スコットランドヤード》</span> → 一応何時もの/霧のロンドン警視庁 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["青空文庫 ルビを除去","s",function(_){ //2015 | f.push(["青空文庫 ルビを除去","s",function(_){ //2015-09-30 | ||
return _.replace(/(?:|([^《\n]+))?《.*?》/g,"$1") }]); | return _.replace(/(?:|([^《\n]+))?《.*?》/g,"$1") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 514行目: | 514行目: | ||
:<code>[#</code> で始まり <code>]</code> で終わる箇所を除去します。 | :<code>[#</code> で始まり <code>]</code> で終わる箇所を除去します。 | ||
:例> <span style="background:#bfdfff;">[#注記付き]名※[#二の字点、1-2-22][#「(銘々)」の注記付き終わり]</span> → 名※ | :例> <span style="background:#bfdfff;">[#注記付き]名※[#二の字点、1-2-22][#「(銘々)」の注記付き終わり]</span> → 名※ | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["青空文庫 注記を除去","s",function(_){ //2014 | f.push(["青空文庫 注記を除去","s",function(_){ //2014-03-14 | ||
return _.replace(/[#.*?]/g,"") }]); | return _.replace(/[#.*?]/g,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 521行目: | 521行目: | ||
:外字を表す注記 <code>※[# ~ ]</code> は例外とし、除去しません。 | :外字を表す注記 <code>※[# ~ ]</code> は例外とし、除去しません。 | ||
:例> <span style="background:#bfdfff;">[#注記付き]名※[#二の字点、1-2-22][#「(銘々)」の注記付き終わり]</span> → 名※[#二の字点、1-2-22] | :例> <span style="background:#bfdfff;">[#注記付き]名※[#二の字点、1-2-22][#「(銘々)」の注記付き終わり]</span> → 名※[#二の字点、1-2-22] | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["青空文庫 注記(外字以外)を除去","s",function(_){ //2014 | f.push(["青空文庫 注記(外字以外)を除去","s",function(_){ //2014-03-14 | ||
return _.replace(/(※[#.*?])|[#.*?]/g,"$1") }]); | return _.replace(/(※[#.*?])|[#.*?]/g,"$1") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 528行目: | 528行目: | ||
=== Web/HTML === | === Web/HTML === | ||
;★HTMLタグを除去 | ;★HTMLタグを除去 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["HTMLタグを除去","s",function(_){ //2015 | f.push(["HTMLタグを除去","s",function(_){ //2015-09-30 | ||
return _.replace(/<("[^"]*"|'[^']*'|[^"'>])*>/g,"") }]); | return _.replace(/<("[^"]*"|'[^']*'|[^"'>])*>/g,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;行末に<br>を挿入 | ;行末に<br>を挿入 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行末に<br>を挿入","L",function(_){ //2015 | f.push(["行末に<br>を挿入","L",function(_){ //2015-02-14 | ||
return _.replace(/$/gm,"<br>") }]); | return _.replace(/$/gm,"<br>") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 542行目: | 542行目: | ||
:※対応タグは <code><br> <br/> <br /></code> の3種類です。英字の大小は問いません。 | :※対応タグは <code><br> <br/> <br /></code> の3種類です。英字の大小は問いません。 | ||
:<b style="color:#c00;">※属性付きには対応していません。</b>例> <code><br clear="all"></code> など | :<b style="color:#c00;">※属性付きには対応していません。</b>例> <code><br clear="all"></code> など | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["<br>を改行に変換","s",function(_){ //2015 | f.push(["<br>を改行に変換","s",function(_){ //2015-02-14 | ||
return _.replace(/<br( ?\/)?>\n?/gi,"\n") }]); | return _.replace(/<br( ?\/)?>\n?/gi,"\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 565行目: | 565行目: | ||
:&nbsp; は U+00A0 (No-Break Space) ではなく、U+0020 (半角空白) に変換します。 | :&nbsp; は U+00A0 (No-Break Space) ではなく、U+0020 (半角空白) に変換します。 | ||
:空白文字 → &nbsp; の変換は、実用上不都合が多いため行いません。 | :空白文字 → &nbsp; の変換は、実用上不都合が多いため行いません。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(['実体参照 &&"<> → &&xxx;',"s",function(_){ //2015 | f.push(['実体参照 &&"<> → &&xxx;',"s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ ["&","&amp;"],['"',"&quot;"],["<","&lt;"],[">","&gt;"] ]) }]); | return _.replaceBatch([ ["&","&amp;"],['"',"&quot;"],["<","&lt;"],[">","&gt;"] ]) }]); | ||
f.push(['実体参照 &&xxx; → \u2423><"&&',"s",function(_){ //2015 | f.push(['実体参照 &&xxx; → \u2423><"&&',"s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ ["&nbsp;"," "],["&gt;",">"],["&lt;","<"],["&quot;",'"'],["&amp;","&"] ]) }]); | return _.replaceBatch([ ["&nbsp;"," "],["&gt;",">"],["&lt;","<"],["&quot;",'"'],["&amp;","&"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
:半角空白 → &nbsp; の変換も行う場合は、下記の内容に差し替えてください。 | :半角空白 → &nbsp; の変換も行う場合は、下記の内容に差し替えてください。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(['実体参照 &&"<>\u2423 → &&xxx;',"s",function(_){ //2015 | f.push(['実体参照 &&"<>\u2423 → &&xxx;',"s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ ["&","&amp;"],['"',"&quot;"],["<","&lt;"],[">","&gt;"],[" ","&nbsp;"] ]) }]); | return _.replaceBatch([ ["&","&amp;"],['"',"&quot;"],["<","&lt;"],[">","&gt;"],[" ","&nbsp;"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 590行目: | 590行目: | ||
:数値文字参照(10進/16進)を文字列に変換します。 | :数値文字参照(10進/16進)を文字列に変換します。 | ||
:例> <span style="background:#bfdfff;">&#65;&#x308F;&#x29e3d;</span> → Aわ𩸽 | :例> <span style="background:#bfdfff;">&#65;&#x308F;&#x29e3d;</span> → Aわ𩸽 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["数値参照を文字に変換","s",function(_){ //2019 | f.push(["数値参照を文字に変換","s",function(_){ //2019-06-01 | ||
return _.replace(/&#(?:([0-9]{1,7})|x([0-9a-f]{1,6}));/gi,function(s,d,x){var n=Number(d||"0x"+x); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | return _.replace(/&#(?:([0-9]{1,7})|x([0-9a-f]{1,6}));/gi,function(s,d,x){var n=Number(d||"0x"+x); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 599行目: | 599行目: | ||
:行頭に // が無い行なら // を挿入し、有る行なら // を削除します。 | :行頭に // が無い行なら // を挿入し、有る行なら // を削除します。 | ||
:※このコマンドをよく利用される場合は「<b>[[コメントマーク付け外し]]</b>」マクロの導入をオススメします。 | :※このコマンドをよく利用される場合は「<b>[[コメントマーク付け外し]]</b>」マクロの導入をオススメします。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭 \/\/ を挿入/削除","L",function(_){ //2015 | f.push(["行頭 \/\/ を挿入/削除","L",function(_){ //2015-03-14 | ||
return _.replace(/^(\/\/)?/gm,function(s){return s? "": "\/\/"}) }]); | return _.replace(/^(\/\/)?/gm,function(s){return s? "": "\/\/"}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 607行目: | 607行目: | ||
:実行中のマクロ(テキスト整形)を Mery で開きます。 | :実行中のマクロ(テキスト整形)を Mery で開きます。 | ||
:※マクロを実行後、[マクロ]→[編集] でファイルを開くのと同様です。 | :※マクロを実行後、[マクロ]→[編集] でファイルを開くのと同様です。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["このマクロを編集","",function(){ //2019 | f.push(["このマクロを編集","",function(){ //2019-06-01 | ||
Editor.OpenFile(ScriptFullName, meEncodingNone, meOpenAllowNewWindow) }]); | Editor.OpenFile(ScriptFullName, meEncodingNone, meOpenAllowNewWindow) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 614行目: | 614行目: | ||
;マクロフォルダを開く | ;マクロフォルダを開く | ||
:エクスプローラを起動し、実行中のマクロ(テキスト整形)があるフォルダを開きます。 | :エクスプローラを起動し、実行中のマクロ(テキスト整形)があるフォルダを開きます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["マクロフォルダを開く","",function(){ //2015 | f.push(["マクロフォルダを開く","",function(){ //2015-12-26 | ||
new ActiveXObject("Shell.Application").Explore(new ActiveXObject("Scripting.FileSystemObject").GetParentFolderName(ScriptFullName)) }]); | new ActiveXObject("Shell.Application").Explore(new ActiveXObject("Scripting.FileSystemObject").GetParentFolderName(ScriptFullName)) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 621行目: | 621行目: | ||
;挿入 Confirm(|) | ;挿入 Confirm(|) | ||
:文字列 <code>if(!Confirm(</code> <code>))Quit();</code> を挿入します。 | :文字列 <code>if(!Confirm(</code> <code>))Quit();</code> を挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["挿入 Confirm(|)","",function(_){ //2019 | f.push(["挿入 Confirm(|)","",function(_){ //2019-06-01 | ||
return ["if(!Confirm(" , _ , "))Quit();"] }]); | return ["if(!Confirm(" , _ , "))Quit();"] }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 629行目: | 629行目: | ||
:ステータスバーに eval(<i>選択範囲</i>) の結果を表示します。 | :ステータスバーに eval(<i>選択範囲</i>) の結果を表示します。 | ||
:たとえば、選択範囲が <code style="background:#bfdfff;">10*(5+20)</code> なら、250 と表示されます。 | :たとえば、選択範囲が <code style="background:#bfdfff;">10*(5+20)</code> なら、250 と表示されます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["選択範囲を eval で評価","s",function(_){ //2019 | f.push(["選択範囲を eval で評価","s",function(_){ //2019-06-01 | ||
Status=eval(_) }]); | Status=eval(_) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 639行目: | 639行目: | ||
:半角文字/半角英数と全角文字の間に半角空白を挿入します。 | :半角文字/半角英数と全角文字の間に半角空白を挿入します。 | ||
:※<b style="color:#c00;">半角文字</b>=ASCII文字+半角カナ、<b style="color:#c00;">全角文字</b>=それ以外の文字、を意味しています。 | :※<b style="color:#c00;">半角文字</b>=ASCII文字+半角カナ、<b style="color:#c00;">全角文字</b>=それ以外の文字、を意味しています。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["半角/全角の間を空ける","s",function(_){ //2014 | f.push(["半角/全角の間を空ける","s",function(_){ //2014-02-16 | ||
return _.replace(/([!-~。-゚](?=[^!-~。-゚ \t\n])|[^!-~。-゚ \t\n](?=[!-~。-゚]))/g,"$1 ") }]); | return _.replace(/([!-~。-゚](?=[^!-~。-゚ \t\n])|[^!-~。-゚ \t\n](?=[!-~。-゚]))/g,"$1 ") }]); | ||
f.push(["半角英数/全角の間を空ける","s",function(_){ //2014 | f.push(["半角英数/全角の間を空ける","s",function(_){ //2014-02-16 | ||
return _.replace(/([0-9A-Za-z](?=[^!-~。-゚ \t\n])|[^!-~。-゚ \t\n](?=[0-9A-Za-z]))/g,"$1 ") }]); | return _.replace(/([0-9A-Za-z](?=[^!-~。-゚ \t\n])|[^!-~。-゚ \t\n](?=[0-9A-Za-z]))/g,"$1 ") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 649行目: | 649行目: | ||
:半角数字列を3桁毎にコンマで区切ります。小数点以下(ピリオド以降)は区切りません。 | :半角数字列を3桁毎にコンマで区切ります。小数点以下(ピリオド以降)は区切りません。 | ||
:例> <span style="background:#bfdfff;">87654321/0.12345/54321.12345</span> → 87,654,321/0.12345/54,321.12345 | :例> <span style="background:#bfdfff;">87654321/0.12345/54321.12345</span> → 87,654,321/0.12345/54,321.12345 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["数値を3桁,区切りに","s",function(_){ //2014 | f.push(["数値を3桁,区切りに","s",function(_){ //2014-10-12 | ||
return _.replace(/([^.0-9]|^)([0-9]+)/g,function(_,p,n){return p+n.replace(/([0-9])(?=(?:[0-9]{3})+$)/g,"$1,")}) }]); | return _.replace(/([^.0-9]|^)([0-9]+)/g,function(_,p,n){return p+n.replace(/([0-9])(?=(?:[0-9]{3})+$)/g,"$1,")}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 656行目: | 656行目: | ||
;複製貼り付け... | ;複製貼り付け... | ||
:クリップボードの文字列を、入力した回数分複製してから貼り付けます。 | :クリップボードの文字列を、入力した回数分複製してから貼り付けます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["複製貼り付け...","c",function(){ //2019 | f.push(["複製貼り付け...","c",function(){ //2019-06-01 | ||
var r=[],c=ClipboardData.GetData(),n=parseInt(Prompt("複製回数: ※半角数字","")); if(n>0){ while(n--){r.push(c)} return r.join("") } }]); | var r=[],c=ClipboardData.GetData(),n=parseInt(Prompt("複製回数: ※半角数字","")); if(n>0){ while(n--){r.push(c)} return r.join("") } }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 663行目: | 663行目: | ||
;★行頭/行末に貼り付け | ;★行頭/行末に貼り付け | ||
:クリップボードの文字列を、各行の行頭/行末に貼り付けます。 | :クリップボードの文字列を、各行の行頭/行末に貼り付けます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭に貼り付け","L c",function(_){ //2015 | f.push(["行頭に貼り付け","L c",function(_){ //2015-09-30 | ||
var c=ClipboardData.GetData().replace(/(\r\n|[\r\n])$/,""); return _.replace(/^/gm,c) }]); | var c=ClipboardData.GetData().replace(/(\r\n|[\r\n])$/,""); return _.replace(/^/gm,c) }]); | ||
f.push(["行末に貼り付け","L c",function(_){ //2015 | f.push(["行末に貼り付け","L c",function(_){ //2015-09-30 | ||
var c=ClipboardData.GetData().replace(/(\r\n|[\r\n])$/,""); return _.replace(/$/gm,c) }]); | var c=ClipboardData.GetData().replace(/(\r\n|[\r\n])$/,""); return _.replace(/$/gm,c) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 672行目: | 672行目: | ||
;★行頭/行末に挿入... | ;★行頭/行末に挿入... | ||
:入力した文字列を、各行の行頭/行末に挿入します。 | :入力した文字列を、各行の行頭/行末に挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭に挿入...","L",function(_){ //2019 | f.push(["行頭に挿入...","L",function(_){ //2019-06-01 | ||
var p=Prompt("行頭に挿入する文字列:",""); if(p)return _.replace(/^/gm,p) }]); | var p=Prompt("行頭に挿入する文字列:",""); if(p)return _.replace(/^/gm,p) }]); | ||
f.push(["行末に挿入...","L",function(_){ //2019 | f.push(["行末に挿入...","L",function(_){ //2019-06-01 | ||
var p=Prompt("行末に挿入する文字列:",""); if(p)return _.replace(/$/gm,p) }]); | var p=Prompt("行末に挿入する文字列:",""); if(p)return _.replace(/$/gm,p) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 696行目: | 696行目: | ||
| 正規表現を使用する (meFindReplaceRegExp)<br>選択した範囲のみ (meReplaceSelOnly)<br>すべて置換 (meReplaceAll) | | 正規表現を使用する (meFindReplaceRegExp)<br>選択した範囲のみ (meReplaceSelOnly)<br>すべて置換 (meReplaceAll) | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["各行先頭に挿入...","",function(_,$){ //2019 | f.push(["各行先頭に挿入...","",function(_,$){ //2019-06-01 | ||
var p=Prompt("各行先頭に挿入する文字列:",""); if(p)$.Replace("^(?=.|\\n)", p, meFindReplaceRegExp+meReplaceSelOnly+meReplaceAll) }]); | var p=Prompt("各行先頭に挿入する文字列:",""); if(p)$.Replace("^(?=.|\\n)", p, meFindReplaceRegExp+meReplaceSelOnly+meReplaceAll) }]); | ||
f.push(["各行末尾に挿入...","",function(_,$){ //2019 | f.push(["各行末尾に挿入...","",function(_,$){ //2019-06-01 | ||
var p=Prompt("各行末尾に挿入する文字列:",""); if(p)$.Replace("(?<=.)$|^(?=\\n)", p, meFindReplaceRegExp+meReplaceSelOnly+meReplaceAll) }]); | var p=Prompt("各行末尾に挿入する文字列:",""); if(p)$.Replace("(?<=.)$|^(?=\\n)", p, meFindReplaceRegExp+meReplaceSelOnly+meReplaceAll) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 705行目: | 705行目: | ||
;行頭に連番挿入 (#) | ;行頭に連番挿入 (#) | ||
:行頭に連番 (1), (2), (3) … を挿入します。 | :行頭に連番 (1), (2), (3) … を挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭に連番挿入 (#)","L",function(_){ //2015 | f.push(["行頭に連番挿入 (#)","L",function(_){ //2015-09-30 | ||
var re=/^/gm, n=1, pf="(", sf=")"; return _.replace(re,function(){return pf+(n++)+sf}) }]); | var re=/^/gm, n=1, pf="(", sf=")"; return _.replace(re,function(){return pf+(n++)+sf}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;行頭に連番挿入 (#/Z) | ;行頭に連番挿入 (#/Z) | ||
:選択行数を Z として、連番 (1/Z), (2/Z), (3/Z) … を挿入します。 | :選択行数を Z として、連番 (1/Z), (2/Z), (3/Z) … を挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭に連番挿入 (#/Z)","L",function(_){ //2015 | f.push(["行頭に連番挿入 (#/Z)","L",function(_){ //2015-09-30 | ||
var re=/^/gm, n=1, m=(_.match(re)||[]).length, pf="(", sf="/"+m+")"; return _.replace(re,function(){return pf+(n++)+sf}) }]); | var re=/^/gm, n=1, m=(_.match(re)||[]).length, pf="(", sf="/"+m+")"; return _.replace(re,function(){return pf+(n++)+sf}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;行頭に連番挿入 (0#) | ;行頭に連番挿入 (0#) | ||
:連番が2桁以上になる場合、桁揃えした連番 (01), (02), (03) … を挿入します。 | :連番が2桁以上になる場合、桁揃えした連番 (01), (02), (03) … を挿入します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭に連番挿入 (0#)","L",function(_){ //2015 | f.push(["行頭に連番挿入 (0#)","L",function(_){ //2015-09-30 | ||
var re=/^/gm, n=1, m=(_.match(re)||[]).length, pf="(", sf=")", sp="0", k=String(m).length, sp=new Array(k).join(sp); return _.replace(re,function(){return pf+(sp+(n++)).slice(-k)+sf}) }]); | var re=/^/gm, n=1, m=(_.match(re)||[]).length, pf="(", sf=")", sp="0", k=String(m).length, sp=new Array(k).join(sp); return _.replace(re,function(){return pf+(sp+(n++)).slice(-k)+sf}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 755行目: | 755行目: | ||
| 最初のみ展開 | | 最初のみ展開 | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["連番を出力...","",function(_){ //2019 | f.push(["連番を出力...","",function(_){ //2019-06-01 | ||
var p=Prompt("連番を出力: ※例> 第1..10章",_.match(/^.*/)[0]), q=p.replace(/^([\s\S]*?)((0*)[0-9]+)\.\.((0*)[0-9]+)([\s\S]*)$/,function(_,p,n,nz,m,mz,q){var r=[],d=Math.max(n.length,m.length),z=(nz||mz)?new Array(d+1).join("0"):"",n=Number(n),m=Number(m); if(n<=m){for(;n<=m;n++)r.push(p+(z+n).slice(-d)+q);}else{for(;n>=m;n--)r.push(p+(z+n).slice(-d)+q);} return r.join("\n")}); if(q!==p)return q }]); | var p=Prompt("連番を出力: ※例> 第1..10章",_.match(/^.*/)[0]), q=p.replace(/^([\s\S]*?)((0*)[0-9]+)\.\.((0*)[0-9]+)([\s\S]*)$/,function(_,p,n,nz,m,mz,q){var r=[],d=Math.max(n.length,m.length),z=(nz||mz)?new Array(d+1).join("0"):"",n=Number(n),m=Number(m); if(n<=m){for(;n<=m;n++)r.push(p+(z+n).slice(-d)+q);}else{for(;n>=m;n--)r.push(p+(z+n).slice(-d)+q);} return r.join("\n")}); if(q!==p)return q }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 763行目: | 763行目: | ||
;★空白文字を除去 | ;★空白文字を除去 | ||
:空白文字(半角空白/全角空白/水平タブ)を除去します。 | :空白文字(半角空白/全角空白/水平タブ)を除去します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空白文字を除去","s",function(_){ //2013 | f.push(["空白文字を除去","s",function(_){ //2013-09-15 | ||
return _.replace(/[ \t]+/g,"") }]); | return _.replace(/[ \t]+/g,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;★行頭行末/行頭/行末の空白を除去 | ;★行頭行末/行頭/行末の空白を除去 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭行末の空白を除去","L",function(_){ //2013 | f.push(["行頭行末の空白を除去","L",function(_){ //2013-09-15 | ||
return _.replace(/^[ \t]+|[ \t]+$/gm,"") }]); | return _.replace(/^[ \t]+|[ \t]+$/gm,"") }]); | ||
f.push(["行頭の空白を除去","L",function(_){ //2015 | f.push(["行頭の空白を除去","L",function(_){ //2015-02-14 | ||
return _.replace(/^[ \t]+/gm,"") }]); | return _.replace(/^[ \t]+/gm,"") }]); | ||
f.push(["行末の空白を除去","L",function(_){ //2015 | f.push(["行末の空白を除去","L",function(_){ //2015-02-14 | ||
return _.replace(/[ \t]+$/gm,"") }]); | return _.replace(/[ \t]+$/gm,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 779行目: | 779行目: | ||
;空白行の空白を除去 | ;空白行の空白を除去 | ||
:空白行を、改行のみの空行にします。 | :空白行を、改行のみの空行にします。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空白行の空白を除去","L",function(_){ //2017 | f.push(["空白行の空白を除去","L",function(_){ //2017-06-25 | ||
return _.replace(/^[ \t]+$/gm,"") }]); | return _.replace(/^[ \t]+$/gm,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 786行目: | 786行目: | ||
;★空白行を削除 | ;★空白行を削除 | ||
:空白行(半角空白/全角空白/水平タブ/改行のみの行)を削除します。 | :空白行(半角空白/全角空白/水平タブ/改行のみの行)を削除します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空白行を削除","L",function(_){ //2015 | f.push(["空白行を削除","L",function(_){ //2015-03-14 | ||
return _.replace(/^[ \t]*$\n?/gm,"") }]); | return _.replace(/^[ \t]*$\n?/gm,"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;空白行を圧縮 | ;空白行を圧縮 | ||
:連続する空白行を1行の空行に変換します。連続しない(=1行の)空白行は削除します。 | :連続する空白行を1行の空行に変換します。連続しない(=1行の)空白行は削除します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空白行を圧縮","L",function(_){ //2015 | f.push(["空白行を圧縮","L",function(_){ //2015-02-14 | ||
return _.replace(/^[ \t]+$/gm,"").replace(/^(\n)\n+|^\n/gm,"$1") }]); | return _.replace(/^[ \t]+$/gm,"").replace(/^(\n)\n+|^\n/gm,"$1") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 799行目: | 799行目: | ||
:連続する空白行を1行分削減します。 | :連続する空白行を1行分削減します。 | ||
:空白行の連続が3行なら2行に、2行なら1行に、1行なら0行(=削除)になります。 | :空白行の連続が3行なら2行に、2行なら1行に、1行なら0行(=削除)になります。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空白行を減量","L",function(_){ //2015 | f.push(["空白行を減量","L",function(_){ //2015-02-14 | ||
return _.replace(/((?:^[ \t]*$\n?)*)(?:^[ \t]*$\n?)/gm,"$1") }]); | return _.replace(/((?:^[ \t]*$\n?)*)(?:^[ \t]*$\n?)/gm,"$1") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 806行目: | 806行目: | ||
;★重複行を単一化 | ;★重複行を単一化 | ||
:同じ内容の行が2個以上ある場合、2個目以降を削除します。 | :同じ内容の行が2個以上ある場合、2個目以降を削除します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["重複行を単一化","L",function(_){ //2018 | f.push(["重複行を単一化","L",function(_){ //2018-01-15 | ||
var a=_.split("\n"),b=[],map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){map[a[i]]=true;b.push(a[i])} } return b.join("\n") }]); | var a=_.split("\n"),b=[],map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){map[a[i]]=true;b.push(a[i])} } return b.join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;重複行を単一化(空白行は除く) | ;重複行を単一化(空白行は除く) | ||
:空白行(半角空白/全角空白/水平タブ/改行のみの行)は例外とし、削除しません。 | :空白行(半角空白/全角空白/水平タブ/改行のみの行)は例外とし、削除しません。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["重複行を単一化(空白行は除く)","L",function(_){ //2018 | f.push(["重複行を単一化(空白行は除く)","L",function(_){ //2018-01-15 | ||
var a=_.split("\n"),b=[],map={}; for(var i=0;i<a.length;i++){ if(/^[ \t]*$/.test(a[i])||!Object.prototype.hasOwnProperty.call(map,a[i])){map[a[i]]=true;b.push(a[i])} } return b.join("\n") }]); | var a=_.split("\n"),b=[],map={}; for(var i=0;i<a.length;i++){ if(/^[ \t]*$/.test(a[i])||!Object.prototype.hasOwnProperty.call(map,a[i])){map[a[i]]=true;b.push(a[i])} } return b.join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;★連続する重複行を単一化 | ;★連続する重複行を単一化 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["連続する重複行を単一化","L",function(_){ //2015 | f.push(["連続する重複行を単一化","L",function(_){ //2015-02-14 | ||
return _.replace(/(^.*$)\n(^\1$\n?)+/gm,"$2") }]); | return _.replace(/(^.*$)\n(^\1$\n?)+/gm,"$2") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;重複する/しない行を抽出 | ;重複する/しない行を抽出 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["重複する行を抽出","L",function(_){ //2018 | f.push(["重複する行を抽出","L",function(_){ //2018-01-15 | ||
var a=_.split("\n"),b=[],k=0,map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){b[k]={dup:false,txt:a[i]};map[a[i]]=k++;}else{b[map[a[i]]].dup=true} } i=b.length;while(--i>=0){ if(b[i].dup){b[i]=b[i].txt}else{b.splice(i,1)} } return b.join("\n") }]); | var a=_.split("\n"),b=[],k=0,map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){b[k]={dup:false,txt:a[i]};map[a[i]]=k++;}else{b[map[a[i]]].dup=true} } i=b.length;while(--i>=0){ if(b[i].dup){b[i]=b[i].txt}else{b.splice(i,1)} } return b.join("\n") }]); | ||
f.push(["重複しない行を抽出","L",function(_){ //2018 | f.push(["重複しない行を抽出","L",function(_){ //2018-01-15 | ||
var a=_.split("\n"),b=[],k=0,map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){b[k]={dup:false,txt:a[i]};map[a[i]]=k++;}else{b[map[a[i]]].dup=true} } i=b.length;while(--i>=0){ if(!b[i].dup){b[i]=b[i].txt}else{b.splice(i,1)} } return b.join("\n") }]); | var a=_.split("\n"),b=[],k=0,map={}; for(var i=0;i<a.length;i++){ if(!Object.prototype.hasOwnProperty.call(map,a[i])){b[k]={dup:false,txt:a[i]};map[a[i]]=k++;}else{b[map[a[i]]].dup=true} } i=b.length;while(--i>=0){ if(!b[i].dup){b[i]=b[i].txt}else{b.splice(i,1)} } return b.join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 849行目: | 849行目: | ||
;★入力文字列を含む/含まない行を削除... | ;★入力文字列を含む/含まない行を削除... | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["入力文字列を含む行を削除...","L",function(_){ //2019 | f.push(["入力文字列を含む行を削除...","L",function(_){ //2019-06-01 | ||
var p=Prompt("以下の文字列を含む行を削除:",""); if(p)return _.replace(/^(.*)$\n?/gm,function(s,t){return (t.indexOf(p)>=0)? "":s}) }]); | var p=Prompt("以下の文字列を含む行を削除:",""); if(p)return _.replace(/^(.*)$\n?/gm,function(s,t){return (t.indexOf(p)>=0)? "":s}) }]); | ||
f.push(["入力文字列を含まない行を削除...","L",function(_){ //2019 | f.push(["入力文字列を含まない行を削除...","L",function(_){ //2019-06-01 | ||
var p=Prompt("以下の文字列を含まない行を削除:",""); if(p)return _.replace(/^(.*)$\n?/gm,function(s,t){return (t.indexOf(p)>=0)? s:""}) }]); | var p=Prompt("以下の文字列を含まない行を削除:",""); if(p)return _.replace(/^(.*)$\n?/gm,function(s,t){return (t.indexOf(p)>=0)? s:""}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 858行目: | 858行目: | ||
;正規表現に一致する/しない行を削除... | ;正規表現に一致する/しない行を削除... | ||
:<b style="color:#c00;">※正規表現は JavaScript (JScript) の仕様で記述します。</b> | :<b style="color:#c00;">※正規表現は JavaScript (JScript) の仕様で記述します。</b> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["正規表現に一致する行を削除...","L",function(_){ //2019 | f.push(["正規表現に一致する行を削除...","L",function(_){ //2019-06-01 | ||
var p=Prompt("以下の正規表現に一致する行を削除:",""); if(p){ p=new RegExp(p); return _.replace(/^(.*)$\n?/gm,function(s,t){return p.test(t)? "":s}) } }]); | var p=Prompt("以下の正規表現に一致する行を削除:",""); if(p){ p=new RegExp(p); return _.replace(/^(.*)$\n?/gm,function(s,t){return p.test(t)? "":s}) } }]); | ||
f.push(["正規表現に一致しない行を削除...","L",function(_){ //2019 | f.push(["正規表現に一致しない行を削除...","L",function(_){ //2019-06-01 | ||
var p=Prompt("以下の正規表現に一致しない行を削除:",""); if(p){ p=new RegExp(p); return _.replace(/^(.*)$\n?/gm,function(s,t){return p.test(t)? s:""}) } }]); | var p=Prompt("以下の正規表現に一致しない行を削除:",""); if(p){ p=new RegExp(p); return _.replace(/^(.*)$\n?/gm,function(s,t){return p.test(t)? s:""}) } }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 868行目: | 868行目: | ||
:各行の行頭/行末から指定した文字数分を削除します。 | :各行の行頭/行末から指定した文字数分を削除します。 | ||
:※結合文字列には対応していません。 | :※結合文字列には対応していません。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行頭から数文字削除...","L",function(_){ //2019 | f.push(["行頭から数文字削除...","L",function(_){ //2019-06-01 | ||
var n=parseInt(Prompt("行頭から削除する字数: ※半角数字","")); if(n>0)return _.replace(new RegExp("^(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\n]){0,"+n+"}","gm"),"") }]); | var n=parseInt(Prompt("行頭から削除する字数: ※半角数字","")); if(n>0)return _.replace(new RegExp("^(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\n]){0,"+n+"}","gm"),"") }]); | ||
f.push(["行末から数文字削除...","L",function(_){ //2019 | f.push(["行末から数文字削除...","L",function(_){ //2019-06-01 | ||
var n=parseInt(Prompt("行末から削除する字数: ※半角数字","")); if(n>0)return _.replace(new RegExp("(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\n]){0,"+n+"}$","gm"),"") }]); | var n=parseInt(Prompt("行末から削除する字数: ※半角数字","")); if(n>0)return _.replace(new RegExp("(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\n]){0,"+n+"}$","gm"),"") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 878行目: | 878行目: | ||
;ASCII文字を単語検索 | ;ASCII文字を単語検索 | ||
:空白文字などを除く ASCII 印字可能文字 (U+0021~007E) が1文字以上連続する箇所を検索します。 | :空白文字などを除く ASCII 印字可能文字 (U+0021~007E) が1文字以上連続する箇所を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["ASCII文字を単語検索","",function(_,$){ //2017 | f.push(["ASCII文字を単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<Graph>)(?<Graph>[!-~])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<Graph>)(?<Graph>[!-~])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;半角カナを単語検索 | ;半角カナを単語検索 | ||
:半角カナ類 (ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚) が1文字以上連続する箇所を検索します。 | :半角カナ類 (ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚) が1文字以上連続する箇所を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["半角カナを単語検索","",function(_,$){ //2017 | f.push(["半角カナを単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<HKana>)(?<HKana>[。-゚])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<HKana>)(?<HKana>[。-゚])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;全角英数を単語検索 | ;全角英数を単語検索 | ||
:全角英数字 (0~9 A~Z a~z) が1文字以上連続する箇所を検索します。 | :全角英数字 (0~9 A~Z a~z) が1文字以上連続する箇所を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["全角英数を単語検索","",function(_,$){ //2017 | f.push(["全角英数を単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<FAlnm>)(?<FAlnm>[0-9A-Za-z])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<FAlnm>)(?<FAlnm>[0-9A-Za-z])+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;CJK漢字を単語検索 | ;CJK漢字を単語検索 | ||
:CJK (China/Japan/Korea) の漢字が1文字以上連続する箇所を検索します。 | :CJK (China/Japan/Korea) の漢字が1文字以上連続する箇所を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["CJK漢字を単語検索","",function(_,$){ //2017 | f.push(["CJK漢字を単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<Han>\\g<VS>|\\g<Han>)(?:(?<Han>[\\p{Han}])(?<VS>[\\x{FE00}-\\x{FE02}\\x{E0100}-\\x{E01EF}])?)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<Han>\\g<VS>|\\g<Han>)(?:(?<Han>[\\p{Han}])(?<VS>[\\x{FE00}-\\x{FE02}\\x{E0100}-\\x{E01EF}])?)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 939行目: | 939行目: | ||
| 半角/全角長音符 (2字) || ー ー || 0xB0, 815B || U+FF70, 30FC || | | 半角/全角長音符 (2字) || ー ー || 0xB0, 815B || U+FF70, 30FC || | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["ひらがなを単語検索","",function(_,$){ //2017 | f.push(["ひらがなを単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<Kana>\\g<Mark>\\g<Mark>|\\g<Kana>\\g<Mark>|\\g<Kana>)(?:(?<Kana>[ぁ-\\x{3096}ゝゞ\\x{309F}])(?<Mark>[\\x{3099}\\x{309A}゛゙゜゚ーー])*)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<Kana>\\g<Mark>\\g<Mark>|\\g<Kana>\\g<Mark>|\\g<Kana>)(?:(?<Kana>[ぁ-\\x{3096}ゝゞ\\x{309F}])(?<Mark>[\\x{3099}\\x{309A}゛゙゜゚ーー])*)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
f.push(["カタカナを単語検索","",function(_,$){ //2017 | f.push(["カタカナを単語検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?<!\\g<Kana>\\g<Mark>\\g<Mark>|\\g<Kana>\\g<Mark>|\\g<Kana>)(?:(?<Kana>[ァ-\\x{30FA}ヽヾ\\x{30FF}ヲ-ッア-ン\\x{31F0}-\\x{31FF}])(?<Mark>[\\x{3099}\\x{309A}゛゙゜゚ーー])*)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?<!\\g<Kana>\\g<Mark>\\g<Mark>|\\g<Kana>\\g<Mark>|\\g<Kana>)(?:(?<Kana>[ァ-\\x{30FA}ヽヾ\\x{30FF}ヲ-ッア-ン\\x{31F0}-\\x{31FF}])(?<Mark>[\\x{3099}\\x{309A}゛゙゜゚ーー])*)+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 948行目: | 948行目: | ||
;CP932依存文字を検索 | ;CP932依存文字を検索 | ||
:Shift_JIS (CP932) の環境依存文字 (NEC特殊文字・IBM拡張文字・ユーザー定義外字・未定義文字) を検索します。 | :Shift_JIS (CP932) の環境依存文字 (NEC特殊文字・IBM拡張文字・ユーザー定義外字・未定義文字) を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["CP932依存文字を検索","",function(_,$){ //2017 | f.push(["CP932依存文字を検索","",function(_,$){ //2017-05-28 | ||
$.Find("[纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏\\x{FA10}增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙\\x{FA12}晳暙暠暲暿曺朎\\x{F929}杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇\\x{FA15}燁燾犱犾猤\\x{FA16}獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦\\x{FA17}睆劯砡硎硤硺礰\\x{FA18}\\x{FA19}\\x{FA1A}禔\\x{FA1B}禛竑竧\\x{FA1C}竫箞\\x{FA1D}絈絜綷綠緖繒罇羡\\x{FA1E}茁荢荿菇菶葈蒴蕓蕙蕫﨟薰\\x{FA20}﨡蠇裵訒訷詹誧誾諟\\x{FA22}諶譓譿賰賴贒赶﨣軏﨤\\x{FA25}遧郞\\x{FA26}鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒\\x{F9DC}﨩隝隯霳霻靃靍靏靑靕顗顥\\x{FA2A}\\x{FA2B}餧\\x{FA2C}馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫\\x{FA2D}鸙黑①-⑳Ⅰ-Ⅹⅰ-ⅹ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼㍻∮∑∟⊿¦'"\\x{E000}-\\x{E757}\\x{80}\\x{F8F0}-\\x{F8F3}]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("[纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏\\x{FA10}增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙\\x{FA12}晳暙暠暲暿曺朎\\x{F929}杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇\\x{FA15}燁燾犱犾猤\\x{FA16}獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦\\x{FA17}睆劯砡硎硤硺礰\\x{FA18}\\x{FA19}\\x{FA1A}禔\\x{FA1B}禛竑竧\\x{FA1C}竫箞\\x{FA1D}絈絜綷綠緖繒罇羡\\x{FA1E}茁荢荿菇菶葈蒴蕓蕙蕫﨟薰\\x{FA20}﨡蠇裵訒訷詹誧誾諟\\x{FA22}諶譓譿賰賴贒赶﨣軏﨤\\x{FA25}遧郞\\x{FA26}鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒\\x{F9DC}﨩隝隯霳霻靃靍靏靑靕顗顥\\x{FA2A}\\x{FA2B}餧\\x{FA2C}馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫\\x{FA2D}鸙黑①-⑳Ⅰ-Ⅹⅰ-ⅹ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼㍻∮∑∟⊿¦'"\\x{E000}-\\x{E757}\\x{80}\\x{F8F0}-\\x{F8F3}]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 955行目: | 955行目: | ||
;CJK互換漢字を検索 | ;CJK互換漢字を検索 | ||
:CJK互換漢字 (U+F900~FAD9, 2F800~2FA1D) を検索します(CJK統合漢字扱いの12字 および 未定義の2字は除く)。 | :CJK互換漢字 (U+F900~FAD9, 2F800~2FA1D) を検索します(CJK統合漢字扱いの12字 および 未定義の2字は除く)。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["CJK互換漢字を検索","",function(_,$){ //2018 | f.push(["CJK互換漢字を検索","",function(_,$){ //2018-01-15 | ||
$.Find("[[^﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧﨨﨩\\x{FA6E}\\x{FA6F}]&&[\\x{F900}-\\x{FAD9}\\x{2F800}-\\x{2FA1D}]]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("[[^﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧﨨﨩\\x{FA6E}\\x{FA6F}]&&[\\x{F900}-\\x{FAD9}\\x{2F800}-\\x{2FA1D}]]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 962行目: | 962行目: | ||
;サロゲートペアを検索 | ;サロゲートペアを検索 | ||
:UTF-16において2バイト2個組で1文字を形成する文字 (U+10000~10FFFF) を検索します。 | :UTF-16において2バイト2個組で1文字を形成する文字 (U+10000~10FFFF) を検索します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["サロゲートペアを検索","",function(_,$){ //2015 | f.push(["サロゲートペアを検索","",function(_,$){ //2015-09-30 | ||
$.Find("[\\x{10000}-\\x{10FFFF}]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("[\\x{10000}-\\x{10FFFF}]", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 995行目: | 995行目: | ||
| 3042||20DE | | 3042||20DE | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["結合文字列を検索","",function(_,$){ //2017 | f.push(["結合文字列を検索","",function(_,$){ //2017-05-28 | ||
$.Find("(?:[^\\p{M}\\n]|^)[\\p{M}]+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | $.Find("(?:[^\\p{M}\\n]|^)[\\p{M}]+", meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,010行目: | 1,010行目: | ||
| 大文字と小文字を区別する (meFindReplaceCase)<br>正規表現を使用する (meFindReplaceRegExp)<br>文末まで検索したら文頭に移動する (meFindAround)<br>下/次を検索 (meFindNext) | | 大文字と小文字を区別する (meFindReplaceCase)<br>正規表現を使用する (meFindReplaceRegExp)<br>文末まで検索したら文頭に移動する (meFindAround)<br>下/次を検索 (meFindNext) | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["選択文字列を検索","s",function(_,$){ //2019 | f.push(["選択文字列を検索","s",function(_,$){ //2019-06-01 | ||
var acp=$.GetActivePos(),anp=$.GetAnchorPos(),sx=ScrollX,sy=ScrollY; Redraw=false; $.Find(_.replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"), meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext); $.SetActivePos(acp);$.SetAnchorPos(anp);ScrollX=sx;ScrollY=sy; Redraw=true; }]); | var acp=$.GetActivePos(),anp=$.GetAnchorPos(),sx=ScrollX,sy=ScrollY; Redraw=false; $.Find(_.replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"), meFindReplaceCase+meFindReplaceRegExp+meFindAround+meFindNext); $.SetActivePos(acp);$.SetAnchorPos(anp);ScrollX=sx;ScrollY=sy; Redraw=true; }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,027行目: | 1,027行目: | ||
| 大文字と小文字を区別する (meFindReplaceCase)<br>正規表現を使用する (meFindReplaceRegExp)<br>すべて置換 (meReplaceAll) | | 大文字と小文字を区別する (meFindReplaceCase)<br>正規表現を使用する (meFindReplaceRegExp)<br>すべて置換 (meReplaceAll) | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["選択文字列をすべて削除","s",function(_,$){ //2019 | f.push(["選択文字列をすべて削除","s",function(_,$){ //2019-06-01 | ||
$.Replace(_.replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"), "", meFindReplaceCase+meFindReplaceRegExp+meReplaceAll) }]); | $.Replace(_.replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"), "", meFindReplaceCase+meFindReplaceRegExp+meReplaceAll) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,034行目: | 1,034行目: | ||
;検索強調をすべて解除 | ;検索強調をすべて解除 | ||
:[検索]→[検索文字列の強調を解除] をすべての文書で実行します。 | :[検索]→[検索文字列の強調を解除] をすべての文書で実行します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["検索強調をすべて解除","",function(){ //2015 | f.push(["検索強調をすべて解除","",function(){ //2015-03-14 | ||
for(var ei=0;ei<Editors.Count;ei++){var d=Editors.Item(ei).Documents; for(var i=0;i<d.Count;i++){d.Item(i).HighlightFind=false}} }]); | for(var ei=0;ei<Editors.Count;ei++){var d=Editors.Item(ei).Documents; for(var i=0;i<d.Count;i++){d.Item(i).HighlightFind=false}} }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,043行目: | 1,043行目: | ||
:<b style="color:#c00;">※検索条件が複雑なほど、件数が多いほど処理に時間がかかります</b>(作者の環境では、1000件で約2秒かかりました)。 | :<b style="color:#c00;">※検索条件が複雑なほど、件数が多いほど処理に時間がかかります</b>(作者の環境では、1000件で約2秒かかりました)。 | ||
:※処理に時間をかけたくない場合は「<b>[[検索ヒット数表示]]</b>」プラグインの導入をオススメします。 | :※処理に時間をかけたくない場合は「<b>[[検索ヒット数表示]]</b>」プラグインの導入をオススメします。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["検索結果カウント","",function(_,$){ //2015 | f.push(["検索結果カウント","",function(_,$){ //2015-09-30 | ||
var t=new Date(),n=-1,acp=$.GetActivePos(),anp=$.GetAnchorPos(),sx=ScrollX,sy=ScrollY; Redraw=false; Status=""; $.StartOfDocument(); do{$.FindRepeat(meFindNext);n++}while(!Status); $.SetActivePos(acp);$.SetAnchorPos(anp);ScrollX=sx;ScrollY=sy; Redraw=true; Status=n+"件の検索結果 (処理時間: "+(new Date()-t)/1000+"秒)" }]); | var t=new Date(),n=-1,acp=$.GetActivePos(),anp=$.GetAnchorPos(),sx=ScrollX,sy=ScrollY; Redraw=false; Status=""; $.StartOfDocument(); do{$.FindRepeat(meFindNext);n++}while(!Status); $.SetActivePos(acp);$.SetAnchorPos(anp);ScrollX=sx;ScrollY=sy; Redraw=true; Status=n+"件の検索結果 (処理時間: "+(new Date()-t)/1000+"秒)" }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,053行目: | 1,053行目: | ||
:表示される数値は「すべて選択」時に表示される字数・行数と同値になります。 | :表示される数値は「すべて選択」時に表示される字数・行数と同値になります。 | ||
:※サロゲートペアは2文字と数えます。 | :※サロゲートペアは2文字と数えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["総字行数カウント","",function(){ //2019 | f.push(["総字行数カウント","",function(){ //2019-06-01 | ||
Status=Document.Text.length+"文字 ("+Document.GetLines(meGetLineView)+"表示行)" }]); | Status=Document.Text.length+"文字 ("+Document.GetLines(meGetLineView)+"表示行)" }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,061行目: | 1,061行目: | ||
:選択範囲または文書全体の文字数(改行/半角空白/全角空白/水平タブは除く)をステータスバーに表示します。 | :選択範囲または文書全体の文字数(改行/半角空白/全角空白/水平タブは除く)をステータスバーに表示します。 | ||
:※サロゲートペアは1文字と数えます。 | :※サロゲートペアは1文字と数えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["文字数カウント(空白は除く)","",function(_){ //2019 | f.push(["文字数カウント(空白は除く)","",function(_){ //2019-06-01 | ||
Status=(_||Document.Text).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").replace(/[\t\n\r ]/g,"").length+"文字 (改行・空白抜き)" }]); | Status=(_||Document.Text).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").replace(/[\t\n\r ]/g,"").length+"文字 (改行・空白抜き)" }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,068行目: | 1,068行目: | ||
;ステータスバーの表示をコピー | ;ステータスバーの表示をコピー | ||
:ステータスバーの左端の欄に表示されている文字列をコピーします。 | :ステータスバーの左端の欄に表示されている文字列をコピーします。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["ステータスバーの表示をコピー","",function(){ //2019 | f.push(["ステータスバーの表示をコピー","",function(){ //2019-06-01 | ||
ClipboardData.SetData(Status) }]); | ClipboardData.SetData(Status) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,077行目: | 1,077行目: | ||
:現在編集中のファイルのパスをクリップボードにコピーします。 | :現在編集中のファイルのパスをクリップボードにコピーします。 | ||
:新規作成ファイルなどパスが存在しない場合は、<無題> の文字がコピーされます。 | :新規作成ファイルなどパスが存在しない場合は、<無題> の文字がコピーされます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["編集中のファイルのパスをコピー","",function(){ //2015 | f.push(["編集中のファイルのパスをコピー","",function(){ //2015-03-14 | ||
ClipboardData.SetData(Document.FullName||"<無題>") }]); | ClipboardData.SetData(Document.FullName||"<無題>") }]); | ||
f.push(["編集中の全ファイルのパスをコピー","",function(){ //2015 | f.push(["編集中の全ファイルのパスをコピー","",function(){ //2015-03-14 | ||
var list=[]; for(var ei=0;ei<Editors.Count;ei++){var d=Editors.Item(ei).Documents; for(var i=0;i<d.Count;i++){list.push(d.Item(i).FullName||"<無題>")}} ClipboardData.SetData(list.join("\r\n")) }]); | var list=[]; for(var ei=0;ei<Editors.Count;ei++){var d=Editors.Item(ei).Documents; for(var i=0;i<d.Count;i++){list.push(d.Item(i).FullName||"<無題>")}} ClipboardData.SetData(list.join("\r\n")) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,087行目: | 1,087行目: | ||
;★行を昇順/降順並べ(Unicode) | ;★行を昇順/降順並べ(Unicode) | ||
:Unicode 順に並べ替えます。 | :Unicode 順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行を昇順並べ(Unicode)","L",function(_){ //2017 | f.push(["行を昇順並べ(Unicode)","L",function(_){ //2017-06-25 | ||
return _.replace(/\uFFFF/g,"\uFFFF_").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"\uFFFF$&").split("\n").sort().join("\n").replace(/\uFFFF([\uD800-\uDBFF][\uDC00-\uDFFF])/g,"$1").replace(/\uFFFF_/g,"\uFFFF") }]); | return _.replace(/\uFFFF/g,"\uFFFF_").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"\uFFFF$&").split("\n").sort().join("\n").replace(/\uFFFF([\uD800-\uDBFF][\uDC00-\uDFFF])/g,"$1").replace(/\uFFFF_/g,"\uFFFF") }]); | ||
f.push(["行を降順並べ(Unicode)","L",function(_){ //2017 | f.push(["行を降順並べ(Unicode)","L",function(_){ //2017-06-25 | ||
return _.replace(/\uFFFF/g,"\uFFFF_").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"\uFFFF$&").split("\n").sort().reverse().join("\n").replace(/\uFFFF([\uD800-\uDBFF][\uDC00-\uDFFF])/g,"$1").replace(/\uFFFF_/g,"\uFFFF") }]); | return _.replace(/\uFFFF/g,"\uFFFF_").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"\uFFFF$&").split("\n").sort().reverse().join("\n").replace(/\uFFFF([\uD800-\uDBFF][\uDC00-\uDFFF])/g,"$1").replace(/\uFFFF_/g,"\uFFFF") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;★行を逆順並べ | ;★行を逆順並べ | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行を逆順並べ","L",function(_){ //2014 | f.push(["行を逆順並べ","L",function(_){ //2014-10-12 | ||
return _.split("\n").reverse().join("\n") }]); | return _.split("\n").reverse().join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,102行目: | 1,102行目: | ||
;行をシャッフル | ;行をシャッフル | ||
:ランダムに並べ替えます。 | :ランダムに並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行をシャッフル","L",function(_){ //2014 | f.push(["行をシャッフル","L",function(_){ //2014-10-12 | ||
var a=_.split("\n"),i=a.length,j,t; while(i){j=Math.floor(Math.random()*i--); t=a[i];a[i]=a[j];a[j]=t;} return a.join("\n") }]); | var a=_.split("\n"),i=a.length,j,t; while(i){j=Math.floor(Math.random()*i--); t=a[i];a[i]=a[j];a[j]=t;} return a.join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,111行目: | 1,111行目: | ||
:※符号点(コードポイント)の少ない順。結合文字列には対応していません。 | :※符号点(コードポイント)の少ない順。結合文字列には対応していません。 | ||
:文字数の多い順に並べ替えたい場合は、<code>a.len-b.len</code> を <code>b.len-a.len</code> に書き換えてください。 | :文字数の多い順に並べ替えたい場合は、<code>a.len-b.len</code> を <code>b.len-a.len</code> に書き換えてください。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["行を文字数順並べ","L",function(_){ //2019 | f.push(["行を文字数順並べ","L",function(_){ //2019-06-01 | ||
var b=_.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").split("\n"),a=_.split("\n"); for(var i=0;i<a.length;i++){a[i]={len:b[i].length,txt:a[i]}} a.sort(function(a,b){return a.len-b.len}); for(var i=0;i<a.length;i++){a[i]=a[i].txt} return a.join("\n") }]); | var b=_.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").split("\n"),a=_.split("\n"); for(var i=0;i<a.length;i++){a[i]={len:b[i].length,txt:a[i]}} a.sort(function(a,b){return a.len-b.len}); for(var i=0;i<a.length;i++){a[i]=a[i].txt} return a.join("\n") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,118行目: | 1,118行目: | ||
;数行毎に逆順並べ... | ;数行毎に逆順並べ... | ||
:選択範囲を指定した行数で区切り、区間ごとに逆順に並べ替えます。 | :選択範囲を指定した行数で区切り、区間ごとに逆順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["数行毎に逆順並べ...","L",function(_){ //2019 | f.push(["数行毎に逆順並べ...","L",function(_){ //2019-06-01 | ||
var n=parseInt(Prompt("以下の行数毎に逆順並べ: ※半角数字","")); if(n>0)return (_+"\n").replace(new RegExp("(?:^.*$\\n){1,"+n+"}","gm"),function(s){return s.split("\n").reverse().join("\n")}).slice(1) }]); | var n=parseInt(Prompt("以下の行数毎に逆順並べ: ※半角数字","")); if(n>0)return (_+"\n").replace(new RegExp("(?:^.*$\\n){1,"+n+"}","gm"),function(s){return s.split("\n").reverse().join("\n")}).slice(1) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;数行一組で逆順並べ... | ;数行一組で逆順並べ... | ||
:選択範囲を指定した行数で一組とし、組単位で逆順に並べ替えます。 | :選択範囲を指定した行数で一組とし、組単位で逆順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["数行一組で逆順並べ...","L",function(_){ //2019 | f.push(["数行一組で逆順並べ...","L",function(_){ //2019-06-01 | ||
var n=parseInt(Prompt("以下の行数を一組として逆順並べ: ※半角数字","")); if(n>0)return (_+"\n").match(new RegExp("(?:^.*$\\n){1,"+n+"}","gm")).reverse().join("").slice(0,-1) }]); | var n=parseInt(Prompt("以下の行数を一組として逆順並べ: ※半角数字","")); if(n>0)return (_+"\n").match(new RegExp("(?:^.*$\\n){1,"+n+"}","gm")).reverse().join("").slice(0,-1) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,131行目: | 1,131行目: | ||
;空行毎に逆順並べ | ;空行毎に逆順並べ | ||
:選択範囲を空行(改行のみの行)で区切り、区間ごとに逆順に並べ替えます。 | :選択範囲を空行(改行のみの行)で区切り、区間ごとに逆順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空行毎に逆順並べ","L",function(_){ //2019 | f.push(["空行毎に逆順並べ","L",function(_){ //2019-06-01 | ||
return (_+"\n").replace(/\n+|[\s\S]*?\n(?=\n|$)/g,function(s){return s.split("\n").reverse().join("\n")}).slice(1) }]); | return (_+"\n").replace(/\n+|[\s\S]*?\n(?=\n|$)/g,function(s){return s.split("\n").reverse().join("\n")}).slice(1) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
;空行一組で逆順並べ | ;空行一組で逆順並べ | ||
:選択範囲を空行区切りで一組とし、組単位で逆順に並べ替えます。 | :選択範囲を空行区切りで一組とし、組単位で逆順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["空行一組で逆順並べ","L",function(_){ //2019 | f.push(["空行一組で逆順並べ","L",function(_){ //2019-06-01 | ||
return (_+"\n").match(/\n+|[\s\S]*?\n(?=\n|$)/g).reverse().join("").slice(0,-1) }]); | return (_+"\n").match(/\n+|[\s\S]*?\n(?=\n|$)/g).reverse().join("").slice(0,-1) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,144行目: | 1,144行目: | ||
;指定見出しで逆順並べ... | ;指定見出しで逆順並べ... | ||
:入力した文字列から始まる行を「見出し」とし、見出し単位で逆順に並べ替えます。 | :入力した文字列から始まる行を「見出し」とし、見出し単位で逆順に並べ替えます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["指定見出しで逆順並べ...","L",function(_){ //2019 | f.push(["指定見出しで逆順並べ...","L",function(_){ //2019-06-01 | ||
var p=Prompt("以下の文字から始まる行を一組として逆順並べ:","■").replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"); if(p){ var r=(_+"\n").match(new RegExp("[\\s\\S]*?\\n(?="+p+"|$)","g")); if(r[0].indexOf(p)!==0)r.push(r.shift()); return r.reverse().join("").slice(0,-1) } }]); | var p=Prompt("以下の文字から始まる行を一組として逆順並べ:","■").replace(/[$()*+.?\[\\\]^{|}]/g,"\\$&"); if(p){ var r=(_+"\n").match(new RegExp("[\\s\\S]*?\\n(?="+p+"|$)","g")); if(r[0].indexOf(p)!==0)r.push(r.shift()); return r.reverse().join("").slice(0,-1) } }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,206行目: | 1,206行目: | ||
|colspan="6"|※同上 | |colspan="6"|※同上 | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["文字を逆順並べ","s",function(_){ //2017 | f.push(["文字を逆順並べ","s",function(_){ //2017-06-25 | ||
var X=new RegExp(/[\x00-\x1F\x7F-\x9F\xAD\u2028\u2029\uFEFF]|(?:(?:\uD83C[\uDDE6-\uDDFF]){2}|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S])(?:[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\u3099\u309A\uFE20-\uFE2F\u200C\u200D\u180B-\u180D\uFE00-\uFE0F]|\uDB40[\uDD00-\uDDEF]|\uD83C[\uDFFB-\uDFFF])*/g); return _.replace(/[^\n]+/g,function(s){return s.match(X).reverse().join("")}) }]); | var X=new RegExp(/[\x00-\x1F\x7F-\x9F\xAD\u2028\u2029\uFEFF]|(?:(?:\uD83C[\uDDE6-\uDDFF]){2}|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S])(?:[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\u3099\u309A\uFE20-\uFE2F\u200C\u200D\u180B-\u180D\uFE00-\uFE0F]|\uDB40[\uDD00-\uDDEF]|\uD83C[\uDFFB-\uDFFF])*/g); return _.replace(/[^\n]+/g,function(s){return s.match(X).reverse().join("")}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,214行目: | 1,214行目: | ||
:各行の文字をランダムに並べ替えます。 | :各行の文字をランダムに並べ替えます。 | ||
:例> <span style="background:#bfdfff;">文字をシャッフル</span> → フ字をャシッル文 | :例> <span style="background:#bfdfff;">文字をシャッフル</span> → フ字をャシッル文 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["文字をシャッフル","s",function(_){ //2017 | f.push(["文字をシャッフル","s",function(_){ //2017-06-25 | ||
var X=new RegExp(/[\x00-\x1F\x7F-\x9F\xAD\u2028\u2029\uFEFF]|(?:(?:\uD83C[\uDDE6-\uDDFF]){2}|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S])(?:[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\u3099\u309A\uFE20-\uFE2F\u200C\u200D\u180B-\u180D\uFE00-\uFE0F]|\uDB40[\uDD00-\uDDEF]|\uD83C[\uDFFB-\uDFFF])*/g); return _.replace(/[^\n]+/g,function(s){var a=s.match(X),i=a.length,j,t; while(i){j=Math.floor(Math.random()*i--); t=a[i];a[i]=a[j];a[j]=t;} return a.join("")}) }]); | var X=new RegExp(/[\x00-\x1F\x7F-\x9F\xAD\u2028\u2029\uFEFF]|(?:(?:\uD83C[\uDDE6-\uDDFF]){2}|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S])(?:[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\u3099\u309A\uFE20-\uFE2F\u200C\u200D\u180B-\u180D\uFE00-\uFE0F]|\uDB40[\uDD00-\uDDEF]|\uD83C[\uDFFB-\uDFFF])*/g); return _.replace(/[^\n]+/g,function(s){var a=s.match(X),i=a.length,j,t; while(i){j=Math.floor(Math.random()*i--); t=a[i];a[i]=a[j];a[j]=t;} return a.join("")}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,222行目: | 1,222行目: | ||
;★半角英数→全角 | ;★半角英数→全角 | ||
;★全角英数→半角 | ;★全角英数→半角 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["半角英数→全角","s",function(_){ //2014 | f.push(["半角英数→全角","s",function(_){ //2014-02-10 | ||
return _.replace(/[0-9A-Za-z]/g,function(s){return String.fromCharCode(s.charCodeAt(0)+0xFEE0)}) }]); | return _.replace(/[0-9A-Za-z]/g,function(s){return String.fromCharCode(s.charCodeAt(0)+0xFEE0)}) }]); | ||
f.push(["全角英数→半角","s",function(_){ //2014 | f.push(["全角英数→半角","s",function(_){ //2014-02-10 | ||
return _.replace(/[0-9A-Za-z]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)}) }]); | return _.replace(/[0-9A-Za-z]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,231行目: | 1,231行目: | ||
;★半角カナ→全角 | ;★半角カナ→全角 | ||
;★全角カナ→半角 | ;★全角カナ→半角 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["半角カナ→全角","s",function(_){ //2015 | f.push(["半角カナ→全角","s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ ["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゙","゛"],["゚","゜"] ]) }]); | return _.replaceBatch([ ["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゙","゛"],["゚","゜"] ]) }]); | ||
f.push(["全角カナ→半角","s",function(_){ //2015 | f.push(["全角カナ→半角","s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ ["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゛","゙"],["゜","゚"] ]) }]); | return _.replaceBatch([ ["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゛","゙"],["゜","゚"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,242行目: | 1,242行目: | ||
:全角ひらがなと全角カタカナを変換します。 | :全角ひらがなと全角カタカナを変換します。 | ||
:ただし、ヴヵヶ → ゔゕゖ の変換は行いません(Shift_JIS では保存できない文字のため)。 | :ただし、ヴヵヶ → ゔゕゖ の変換は行いません(Shift_JIS では保存できない文字のため)。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["全角かな→カナ","s",function(_){ //2014 | f.push(["全角かな→カナ","s",function(_){ //2014-02-10 | ||
return _.replace(/[\u3041-\u3096ゝゞ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)+0x60)}) }]); | return _.replace(/[\u3041-\u3096ゝゞ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)+0x60)}) }]); | ||
f.push(["全角カナ→かな(ヴヵヶ除く)","s",function(_){ //2015 | f.push(["全角カナ→かな(ヴヵヶ除く)","s",function(_){ //2015-02-14 | ||
return _.replace(/[\u30A1-\u30F3ヽヾ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0x60)}) }]); | return _.replace(/[\u30A1-\u30F3ヽヾ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0x60)}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
:ヴヵヶ → ゔゕゖ の変換も行う場合は、下記の内容に差し替えてください。 | :ヴヵヶ → ゔゕゖ の変換も行う場合は、下記の内容に差し替えてください。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["全角カナ→かな","s",function(_){ //2014 | f.push(["全角カナ→かな","s",function(_){ //2014-02-10 | ||
return _.replace(/[\u30A1-\u30F6ヽヾ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0x60)}) }]); | return _.replace(/[\u30A1-\u30F6ヽヾ]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0x60)}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,258行目: | 1,258行目: | ||
:例> <span style="background:#bfdfff;">あ゙じう゛ヷヘ゜か゚</span> → あ゙じゔヷペか゚ | :例> <span style="background:#bfdfff;">あ゙じう゛ヷヘ゜か゚</span> → あ゙じゔヷペか゚ | ||
:※「あ゙」「か゚」は合成不能のため変化なし。 | :※「あ゙」「か゚」は合成不能のため変化なし。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["全角仮名+濁点を合成","s",function(_){ //2019 | f.push(["全角仮名+濁点を合成","s",function(_){ //2019-12-21 | ||
var map={"\u3099":"゙","゛":"゙","゙":"゙","\u309A":"゚","゜":"゚","゚":"゚","が":"が","ぎ":"ぎ","ぐ":"ぐ","げ":"げ","ご":"ご","ざ":"ざ","じ":"じ","ず":"ず","ぜ":"ぜ","ぞ":"ぞ","だ":"だ","ぢ":"ぢ","づ":"づ","で":"で","ど":"ど","ば":"ば","び":"び","ぶ":"ぶ","べ":"べ","ぼ":"ぼ","ゞ":"ゞ","ガ":"ガ","ギ":"ギ","グ":"グ","ゲ":"ゲ","ゴ":"ゴ","ザ":"ザ","ジ":"ジ","ズ":"ズ","ゼ":"ゼ","ゾ":"ゾ","ダ":"ダ","ヂ":"ヂ","ヅ":"ヅ","デ":"デ","ド":"ド","バ":"バ","ビ":"ビ","ブ":"ブ","ベ":"ベ","ボ":"ボ","ヾ":"ヾ","ぱ":"ぱ","ぴ":"ぴ","ぷ":"ぷ","ぺ":"ぺ","ぽ":"ぽ","パ":"パ","ピ":"ピ","プ":"プ","ペ":"ペ","ポ":"ポ","ゔ":"ゔ","ヴ":"ヴ","ヷ":"ヷ","ヸ":"ヸ","ヹ":"ヹ","ヺ":"ヺ"}; return _.replace(/([うウかきくけこさしすせそたちつてとはひふへほゝカキクケコサシスセソタチツテトハヒフヘホヽワヰヱヲ])([\u3099゛゙\u309A゜゚])/g,function(s,k,v){return map[k+map[v]]||s}) }]); | var map={"\u3099":"゙","゛":"゙","゙":"゙","\u309A":"゚","゜":"゚","゚":"゚","が":"が","ぎ":"ぎ","ぐ":"ぐ","げ":"げ","ご":"ご","ざ":"ざ","じ":"じ","ず":"ず","ぜ":"ぜ","ぞ":"ぞ","だ":"だ","ぢ":"ぢ","づ":"づ","で":"で","ど":"ど","ば":"ば","び":"び","ぶ":"ぶ","べ":"べ","ぼ":"ぼ","ゞ":"ゞ","ガ":"ガ","ギ":"ギ","グ":"グ","ゲ":"ゲ","ゴ":"ゴ","ザ":"ザ","ジ":"ジ","ズ":"ズ","ゼ":"ゼ","ゾ":"ゾ","ダ":"ダ","ヂ":"ヂ","ヅ":"ヅ","デ":"デ","ド":"ド","バ":"バ","ビ":"ビ","ブ":"ブ","ベ":"ベ","ボ":"ボ","ヾ":"ヾ","ぱ":"ぱ","ぴ":"ぴ","ぷ":"ぷ","ぺ":"ぺ","ぽ":"ぽ","パ":"パ","ピ":"ピ","プ":"プ","ペ":"ペ","ポ":"ポ","ゔ":"ゔ","ヴ":"ヴ","ヷ":"ヷ","ヸ":"ヸ","ヹ":"ヹ","ヺ":"ヺ"}; return _.replace(/([うウかきくけこさしすせそたちつてとはひふへほゝカキクケコサシスセソタチツテトハヒフヘホヽワヰヱヲ])([\u3099゛゙\u309A゜゚])/g,function(s,k,v){return map[k+map[v]]||s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,279行目: | 1,279行目: | ||
|align="center"| ` || 半角グレーブアクセント/バッククォート | |align="center"| ` || 半角グレーブアクセント/バッククォート | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["標準変換","s",function(_){ //2015 | f.push(["標準変換","s",function(_){ //2015-03-14 | ||
return _.replaceBatch([ [" "," "],["!","!"],["“",'"'],["”",'"'],["#","#"],["$","$"],["%","%"],["&","&"],["‘","'"],["’","'"],["(","("],[")",")"],["*","*"],["+","+"],[",",","],["-","-"],[".","."],["/","/"],["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"],["8","8"],["9","9"],[":",":"],[";",";"],["<","<"],["=","="],[">",">"],["?","?"],["@","@"],["A","A"],["B","B"],["C","C"],["D","D"],["E","E"],["F","F"],["G","G"],["H","H"],["I","I"],["J","J"],["K","K"],["L","L"],["M","M"],["N","N"],["O","O"],["P","P"],["Q","Q"],["R","R"],["S","S"],["T","T"],["U","U"],["V","V"],["W","W"],["X","X"],["Y","Y"],["Z","Z"],["[","["],["¥","\\"],["]","]"],["^","^"],["_","_"],["`","`"],["a","a"],["b","b"],["c","c"],["d","d"],["e","e"],["f","f"],["g","g"],["h","h"],["i","i"],["j","j"],["k","k"],["l","l"],["m","m"],["n","n"],["o","o"],["p","p"],["q","q"],["r","r"],["s","s"],["t","t"],["u","u"],["v","v"],["w","w"],["x","x"],["y","y"],["z","z"],["{","{"],["|","|"],["}","}"],["~","~"],["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゙","゛"],["゚","゜"] ]) }]); | return _.replaceBatch([ [" "," "],["!","!"],["“",'"'],["”",'"'],["#","#"],["$","$"],["%","%"],["&","&"],["‘","'"],["’","'"],["(","("],[")",")"],["*","*"],["+","+"],[",",","],["-","-"],[".","."],["/","/"],["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"],["8","8"],["9","9"],[":",":"],[";",";"],["<","<"],["=","="],[">",">"],["?","?"],["@","@"],["A","A"],["B","B"],["C","C"],["D","D"],["E","E"],["F","F"],["G","G"],["H","H"],["I","I"],["J","J"],["K","K"],["L","L"],["M","M"],["N","N"],["O","O"],["P","P"],["Q","Q"],["R","R"],["S","S"],["T","T"],["U","U"],["V","V"],["W","W"],["X","X"],["Y","Y"],["Z","Z"],["[","["],["¥","\\"],["]","]"],["^","^"],["_","_"],["`","`"],["a","a"],["b","b"],["c","c"],["d","d"],["e","e"],["f","f"],["g","g"],["h","h"],["i","i"],["j","j"],["k","k"],["l","l"],["m","m"],["n","n"],["o","o"],["p","p"],["q","q"],["r","r"],["s","s"],["t","t"],["u","u"],["v","v"],["w","w"],["x","x"],["y","y"],["z","z"],["{","{"],["|","|"],["}","}"],["~","~"],["ヴ","ヴ"],["ガ","ガ"],["ギ","ギ"],["グ","グ"],["ゲ","ゲ"],["ゴ","ゴ"],["ザ","ザ"],["ジ","ジ"],["ズ","ズ"],["ゼ","ゼ"],["ゾ","ゾ"],["ダ","ダ"],["ヂ","ヂ"],["ヅ","ヅ"],["デ","デ"],["ド","ド"],["バ","バ"],["ビ","ビ"],["ブ","ブ"],["ベ","ベ"],["ボ","ボ"],["パ","パ"],["ピ","ピ"],["プ","プ"],["ペ","ペ"],["ポ","ポ"],["。","。"],["「","「"],["」","」"],["、","、"],["・","・"],["ヲ","ヲ"],["ァ","ァ"],["ィ","ィ"],["ゥ","ゥ"],["ェ","ェ"],["ォ","ォ"],["ャ","ャ"],["ュ","ュ"],["ョ","ョ"],["ッ","ッ"],["ー","ー"],["ア","ア"],["イ","イ"],["ウ","ウ"],["エ","エ"],["オ","オ"],["カ","カ"],["キ","キ"],["ク","ク"],["ケ","ケ"],["コ","コ"],["サ","サ"],["シ","シ"],["ス","ス"],["セ","セ"],["ソ","ソ"],["タ","タ"],["チ","チ"],["ツ","ツ"],["テ","テ"],["ト","ト"],["ナ","ナ"],["ニ","ニ"],["ヌ","ヌ"],["ネ","ネ"],["ノ","ノ"],["ハ","ハ"],["ヒ","ヒ"],["フ","フ"],["ヘ","ヘ"],["ホ","ホ"],["マ","マ"],["ミ","ミ"],["ム","ム"],["メ","メ"],["モ","モ"],["ヤ","ヤ"],["ユ","ユ"],["ヨ","ヨ"],["ラ","ラ"],["リ","リ"],["ル","ル"],["レ","レ"],["ロ","ロ"],["ワ","ワ"],["ン","ン"],["゙","゛"],["゚","゜"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,292行目: | 1,292行目: | ||
|唖||焔||鴎||掴||麹||嘘||侠||頬||躯||倶||繋||妍||鹸||噛||攅||叱||繍||蒋||醤||蝉||掻||痩||騨||箪||填||顛||祷||涜||呑||嚢||剥||溌||醗||屏||并||麺||莱||屡||濾||蝋 | |唖||焔||鴎||掴||麹||嘘||侠||頬||躯||倶||繋||妍||鹸||噛||攅||叱||繍||蒋||醤||蝉||掻||痩||騨||箪||填||顛||祷||涜||呑||嚢||剥||溌||醗||屏||并||麺||莱||屡||濾||蝋 | ||
|} | |} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["表外漢字→代替","s",function(_){ //2017 | f.push(["表外漢字→代替","s",function(_){ //2017-06-25 | ||
return _.replaceBatch([ ["\u555E","唖"],["\u7130","焔"],["\u9DD7","鴎"],["\u6451","掴"],["\u9EB4","麹"],["\u5653","嘘"],["\u4FE0","侠"],["\u9830","頬"],["\u8EC0","躯"],["\u4FF1","倶"],["\u7E6B","繋"],["\u59F8","妍"],["\u9E7C","鹸"],["\u5699","噛"],["\u6522","攅"],["\uD842\uDF9F","叱"],["\u7E61","繍"],["\u8523","蒋"],["\u91AC","醤"],["\u87EC","蝉"],["\u6414","掻"],["\u7626","痩"],["\u9A52","騨"],["\u7C1E","箪"],["\u5861","填"],["\u985A","顛"],["\u79B1","祷"],["\u7006","涜"],["\u541E","呑"],["\u56CA","嚢"],["\u525D","剥"],["\u6F51","溌"],["\u91B1","醗"],["\u5C5B","屏"],["\u5E77","并"],["\u9EB5","麺"],["\u840A","莱"],["\u5C62","屡"],["\u6CAA","濾"],["\u881F","蝋"] ]) }]); | return _.replaceBatch([ ["\u555E","唖"],["\u7130","焔"],["\u9DD7","鴎"],["\u6451","掴"],["\u9EB4","麹"],["\u5653","嘘"],["\u4FE0","侠"],["\u9830","頬"],["\u8EC0","躯"],["\u4FF1","倶"],["\u7E6B","繋"],["\u59F8","妍"],["\u9E7C","鹸"],["\u5699","噛"],["\u6522","攅"],["\uD842\uDF9F","叱"],["\u7E61","繍"],["\u8523","蒋"],["\u91AC","醤"],["\u87EC","蝉"],["\u6414","掻"],["\u7626","痩"],["\u9A52","騨"],["\u7C1E","箪"],["\u5861","填"],["\u985A","顛"],["\u79B1","祷"],["\u7006","涜"],["\u541E","呑"],["\u56CA","嚢"],["\u525D","剥"],["\u6F51","溌"],["\u91B1","醗"],["\u5C5B","屏"],["\u5E77","并"],["\u9EB5","麺"],["\u840A","莱"],["\u5C62","屡"],["\u6CAA","濾"],["\u881F","蝋"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,300行目: | 1,300行目: | ||
:半角数字列を10進数値とみなし、16進数値に変換します。 | :半角数字列を10進数値とみなし、16進数値に変換します。 | ||
:例> <span style="background:#bfdfff;">291/15/44015</span> → 123/F/ABEF | :例> <span style="background:#bfdfff;">291/15/44015</span> → 123/F/ABEF | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["10→16進数","s",function(_){ //2014 | f.push(["10→16進数","s",function(_){ //2014-05-31 | ||
return _.replace(/[0-9]+/g,function(s){return Number(s).toString(16).toUpperCase()}) }]); | return _.replace(/[0-9]+/g,function(s){return Number(s).toString(16).toUpperCase()}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,307行目: | 1,307行目: | ||
:半角英数字列を16進数値とみなし、10進数値に変換します。英字の大小、0x の有無は問いません。 | :半角英数字列を16進数値とみなし、10進数値に変換します。英字の大小、0x の有無は問いません。 | ||
:例> <span style="background:#bfdfff;">123/0x0F/abef</span> → 291/15/44015 | :例> <span style="background:#bfdfff;">123/0x0F/abef</span> → 291/15/44015 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["16→10進数","s",function(_){ //2017 | f.push(["16→10進数","s",function(_){ //2017-06-25 | ||
return _.replace(/(?:0x)?([0-9a-f]+)/gi,function(_,x){return Number("0x"+x)}) }]); | return _.replace(/(?:0x)?([0-9a-f]+)/gi,function(_,x){return Number("0x"+x)}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,315行目: | 1,315行目: | ||
:半角数字列を 2<sup>10</sup> = 1024 の倍量単位 (Ki,Mi,Gi...Yi) に変換します(小数点第3位を四捨五入)。 | :半角数字列を 2<sup>10</sup> = 1024 の倍量単位 (Ki,Mi,Gi...Yi) に変換します(小数点第3位を四捨五入)。 | ||
:例> <span style="background:#bfdfff;">1023/1024/54321/1,048,576/1,073,741,824</span> → 1023/1.00Ki/53.05Ki/1.00Mi/1.00Gi | :例> <span style="background:#bfdfff;">1023/1024/54321/1,048,576/1,073,741,824</span> → 1023/1.00Ki/53.05Ki/1.00Mi/1.00Gi | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["2進接頭辞換算","s",function(_){ //2015 | f.push(["2進接頭辞換算","s",function(_){ //2015-03-14 | ||
var k=1024,p="?KMGTPEZY"; return _.replace(/[0-9]+(,?[0-9]{3})+/g,function(s){var x=0,n=s.replace(/,/g,""); if(n<k)return s; while(n>=k&&x<8){n/=k;x++} return n.toFixed(2)+p.charAt(x)+"i"}) }]); | var k=1024,p="?KMGTPEZY"; return _.replace(/[0-9]+(,?[0-9]{3})+/g,function(s){var x=0,n=s.replace(/,/g,""); if(n<k)return s; while(n>=k&&x<8){n/=k;x++} return n.toFixed(2)+p.charAt(x)+"i"}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,323行目: | 1,323行目: | ||
;URL %エンコード/デコード(UTF-8) | ;URL %エンコード/デコード(UTF-8) | ||
:URL アドレスに使用されるパーセントエンコーディングの符号化/復号化を行います。 | :URL アドレスに使用されるパーセントエンコーディングの符号化/復号化を行います。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["URL %エンコード(UTF-8)","s",function(_){ //2014 | f.push(["URL %エンコード(UTF-8)","s",function(_){ //2014-02-01 | ||
return encodeURI(_).replace(/%0D%0A|%0D|%0A/g,"\n") }]); | return encodeURI(_).replace(/%0D%0A|%0D|%0A/g,"\n") }]); | ||
f.push(["URL %デコード(UTF-8)","s",function(_){ //2014 | f.push(["URL %デコード(UTF-8)","s",function(_){ //2014-02-01 | ||
return decodeURIComponent(_) }]); | return decodeURIComponent(_) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,336行目: | 1,336行目: | ||
:* 改行は LF (0x0A) としてエンコードされます。 | :* 改行は LF (0x0A) としてエンコードされます。 | ||
:* A~Z a~z 0~9 + / 以外の文字(改行含む)は除去してからデコードされます。 | :* A~Z a~z 0~9 + / 以外の文字(改行含む)は除去してからデコードされます。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["Base64エンコード(UTF-8)","s",function(_){ //2019 | f.push(["Base64エンコード(UTF-8)","s",function(_){ //2019-12-21 | ||
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), bin=unescape(encodeURIComponent(_)), n=bin.length, asc="", x; for(var i=0;i<n;){x=(bin.charCodeAt(i++)<<16)|(bin.charCodeAt(i++)<<8)|(bin.charCodeAt(i++)); asc+=A[x>>>18&0x3F]+A[x>>>12&0x3F]+A[x>>>6&0x3F]+A[x&0x3F]} if(n%3)asc=asc.slice(0,n%3-3)+"===".slice(n%3); return asc }]); | var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), bin=unescape(encodeURIComponent(_)), n=bin.length, asc="", x; for(var i=0;i<n;){x=(bin.charCodeAt(i++)<<16)|(bin.charCodeAt(i++)<<8)|(bin.charCodeAt(i++)); asc+=A[x>>>18&0x3F]+A[x>>>12&0x3F]+A[x>>>6&0x3F]+A[x&0x3F]} if(n%3)asc=asc.slice(0,n%3-3)+"===".slice(n%3); return asc }]); | ||
f.push(["Base64デコード(UTF-8)","s",function(_){ //2019 | f.push(["Base64デコード(UTF-8)","s",function(_){ //2019-12-21 | ||
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", B={}; for(var i=0;i<A.length;i++){B[A.charAt(i)]=i} var asc=_.replace(/[^A-Za-z0-9+/]/g,"").split(""), n=asc.length, bin="", x; for(var i=0;i<n;){x=(B[asc[i++]]<<18)|(B[asc[i++]]<<12)|(B[asc[i++]]<<6)|(B[asc[i++]]); bin+=String.fromCharCode(x>>>16&0xFF,x>>>8&0xFF,x&0xFF)} bin=bin.replace(/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}|.){1,50}/g,function(bin){return decodeURIComponent(escape(bin))}); if(n%4)bin=bin.slice(0,n%4-4); return bin }]); | var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", B={}; for(var i=0;i<A.length;i++){B[A.charAt(i)]=i} var asc=_.replace(/[^A-Za-z0-9+/]/g,"").split(""), n=asc.length, bin="", x; for(var i=0;i<n;){x=(B[asc[i++]]<<18)|(B[asc[i++]]<<12)|(B[asc[i++]]<<6)|(B[asc[i++]]); bin+=String.fromCharCode(x>>>16&0xFF,x>>>8&0xFF,x&0xFF)} bin=bin.replace(/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}|.){1,50}/g,function(bin){return decodeURIComponent(escape(bin))}); if(n%4)bin=bin.slice(0,n%4-4); return bin }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,346行目: | 1,346行目: | ||
:JavaScript などで使用される \uHHHH 形式の変換を行います。※HHHH=4桁の16進数 | :JavaScript などで使用される \uHHHH 形式の変換を行います。※HHHH=4桁の16進数 | ||
:例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\u0041\u308F\uD867\uDE3D</span> | :例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\u0041\u308F\uD867\uDE3D</span> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["\\uHHHH エンコード","s",function(_){ //2017 | f.push(["\\uHHHH エンコード","s",function(_){ //2017-06-25 | ||
return _.replace(/[^\n]/g,function(s){return "\\u"+("000"+s.charCodeAt(0).toString(16).toUpperCase()).slice(-4)}) }]); | return _.replace(/[^\n]/g,function(s){return "\\u"+("000"+s.charCodeAt(0).toString(16).toUpperCase()).slice(-4)}) }]); | ||
f.push(["\\uHHHH デコード","s",function(_){ //2014 | f.push(["\\uHHHH デコード","s",function(_){ //2014-10-12 | ||
return _.replace(/\\u([0-9A-Fa-f]{4})/g,function(_,n){return String.fromCharCode(Number("0x"+n))}) }]); | return _.replace(/\\u([0-9A-Fa-f]{4})/g,function(_,n){return String.fromCharCode(Number("0x"+n))}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,356行目: | 1,356行目: | ||
:Unicode で使用される \u4H および \U8H 形式の変換を行います。※4H, 8H=4桁, 8桁の16進数 | :Unicode で使用される \u4H および \U8H 形式の変換を行います。※4H, 8H=4桁, 8桁の16進数 | ||
:例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\u0041\u308F\U00029E3D</span> | :例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\u0041\u308F\U00029E3D</span> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["\\u4H \\U8H エンコード","s",function(_){ //2017 | f.push(["\\u4H \\U8H エンコード","s",function(_){ //2017-06-25 | ||
return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00);r+="\\U"+toHex(u,8);continue}} r+="\\u"+toHex(u,4)} return r}); function toHex(n,d){return ("000"+n.toString(16).toUpperCase()).slice(-d)} }]); | return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00);r+="\\U"+toHex(u,8);continue}} r+="\\u"+toHex(u,4)} return r}); function toHex(n,d){return ("000"+n.toString(16).toUpperCase()).slice(-d)} }]); | ||
f.push(["\\u4H \\U8H デコード","s",function(_){ //2015 | f.push(["\\u4H \\U8H デコード","s",function(_){ //2015-09-30 | ||
return _.replace(/\\u([0-9A-Fa-f]{4})|\\U([0-9A-Fa-f]{8})/g,function(s,u4,U8){var n=Number("0x"+(u4||U8)); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | return _.replace(/\\u([0-9A-Fa-f]{4})|\\U([0-9A-Fa-f]{8})/g,function(s,u4,U8){var n=Number("0x"+(u4||U8)); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,366行目: | 1,366行目: | ||
:Mery の正規表現 (鬼車/鬼雲) などで使用される \x{hex} 形式の変換を行います。※hex=1~6桁の16進数 | :Mery の正規表現 (鬼車/鬼雲) などで使用される \x{hex} 形式の変換を行います。※hex=1~6桁の16進数 | ||
:例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\x{41}\x{308f}\x{29e3d}</span> | :例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">\x{41}\x{308f}\x{29e3d}</span> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["\\x{hex} エンコード","s",function(_){ //2017 | f.push(["\\x{hex} エンコード","s",function(_){ //2017-06-25 | ||
return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("\\x{"+u.toString(16)+"}")} return r}) }]); | return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("\\x{"+u.toString(16)+"}")} return r}) }]); | ||
f.push(["\\x{hex} デコード","s",function(_){ //2015 | f.push(["\\x{hex} デコード","s",function(_){ //2015-03-14 | ||
return _.replace(/\\x\{([0-9A-Fa-f]{1,6})\}/g,function(s,n){n=Number("0x"+n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | return _.replace(/\\x\{([0-9A-Fa-f]{1,6})\}/g,function(s,n){n=Number("0x"+n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,376行目: | 1,376行目: | ||
:HTML などで使用される &#dec; 形式の変換を行います。※dec=1~7桁の10進数 | :HTML などで使用される &#dec; 形式の変換を行います。※dec=1~7桁の10進数 | ||
:例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">&#65;&#12431;&#171581;</span> | :例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">&#65;&#12431;&#171581;</span> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["&&#dec; エンコード","s",function(_){ //2017 | f.push(["&&#dec; エンコード","s",function(_){ //2017-06-25 | ||
return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("&#"+u+";")} return r}) }]); | return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("&#"+u+";")} return r}) }]); | ||
f.push(["&&#dec; デコード","s",function(_){ //2015 | f.push(["&&#dec; デコード","s",function(_){ //2015-03-14 | ||
return _.replace(/&#([0-9]{1,7});/g,function(s,n){n=Number(n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | return _.replace(/&#([0-9]{1,7});/g,function(s,n){n=Number(n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,386行目: | 1,386行目: | ||
:HTML などで使用される &#xHEX; 形式の変換を行います。※HEX=1~6桁の16進数 | :HTML などで使用される &#xHEX; 形式の変換を行います。※HEX=1~6桁の16進数 | ||
:例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">&#x41;&#x308F;&#x29E3D;</span> | :例> <span style="background:#bfdfff;">Aわ𩸽</span> ←→ <span style="background:#bfdfff;">&#x41;&#x308F;&#x29E3D;</span> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["&&#xHEX; エンコード","s",function(_){ //2017 | f.push(["&&#xHEX; エンコード","s",function(_){ //2017-06-25 | ||
return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("&#x"+u.toString(16).toUpperCase()+";")} return r}) }]); | return _.replace(/[^\n]+/g,function(s){var r="",u,v; for(var i=0;i<s.length;i++){u=s.charCodeAt(i); if(0xD800<=u&&u<=0xDBFF){v=s.charCodeAt(i+1); if(0xDC00<=v&&v<=0xDFFF){i++;u=0x10000+(u-0xD800<<10)+(v-0xDC00)}} r+=("&#x"+u.toString(16).toUpperCase()+";")} return r}) }]); | ||
f.push(["&&#xHEX; デコード","s",function(_){ //2017 | f.push(["&&#xHEX; デコード","s",function(_){ //2017-06-25 | ||
return _.replace(/&#[Xx]([0-9A-Fa-f]{1,6});/g,function(s,n){n=Number("0x"+n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | return _.replace(/&#[Xx]([0-9A-Fa-f]{1,6});/g,function(s,n){n=Number("0x"+n); return (n<=0xFFFF)?String.fromCharCode(n): (n<=0x10FFFF)?String.fromCharCode(n-0x10000>>10|0xD800,n&0x3FF|0xDC00): s}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,396行目: | 1,396行目: | ||
;拡張コード テンプレート | ;拡張コード テンプレート | ||
:拡張コードの雛形を挿入します。コマンドを自作したい場合にご利用ください。 | :拡張コードの雛形を挿入します。コマンドを自作したい場合にご利用ください。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["拡張コード テンプレート",function(f){ //2019 | f.push(["拡張コード テンプレート",function(f){ //2019-06-01 | ||
f.push(["コマンド","",function(_,$){ | f.push(["コマンド","",function(_,$){ | ||
$.StartOfLine(); return ['f.push(["コマンド","",function(_,$){\n ' , ' }]);\n'] }]); | $.StartOfLine(); return ['f.push(["コマンド","",function(_,$){\n ' , ' }]);\n'] }]); | ||
| 1,419行目: | 1,419行目: | ||
:配列の検索文字列と置換文字列を入れ替えます。正規表現は検索側のみ使用可なので交換しません(例では <code>■,□</code> のペアが該当)。 | :配列の検索文字列と置換文字列を入れ替えます。正規表現は検索側のみ使用可なので交換しません(例では <code>■,□</code> のペアが該当)。 | ||
:例> <code style="background:#bfdfff;">["●","○"],['▲','△'],[/■/g,"□"],["◆",'◇']</code> → <code>["○","●"],['△','▲'],[/■/g,"□"],['◇',"◆"]</code> | :例> <code style="background:#bfdfff;">["●","○"],['▲','△'],[/■/g,"□"],["◆",'◇']</code> → <code>["○","●"],['△','▲'],[/■/g,"□"],['◇',"◆"]</code> | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(['交換 ["a","b"] → ["b","a"]',"s",function(_){ //2014 | f.push(['交換 ["a","b"] → ["b","a"]',"s",function(_){ //2014-05-31 | ||
return _.replace(/\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'),("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*')\]/g,"[$2,$1]") }]); | return _.replace(/\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'),("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*')\]/g,"[$2,$1]") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,427行目: | 1,427行目: | ||
;結合 "a" › "b"↵ → ["a","b"] | ;結合 "a" › "b"↵ → ["a","b"] | ||
:配列と TSV 形式を変換します。 | :配列と TSV 形式を変換します。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(['分割 ["a","b"] → "a" \u203A "b"\u21B5',"L",function(_){ //2017 | f.push(['分割 ["a","b"] → "a" \u203A "b"\u21B5',"L",function(_){ //2017-06-25 | ||
return _.replace(/,?\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'|\/.*?\/[gim]*),("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*')\],?/g,"\n$1\t$2\n").replace(/\n\n/g,"\n") }]); | return _.replace(/,?\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'|\/.*?\/[gim]*),("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*')\],?/g,"\n$1\t$2\n").replace(/\n\n/g,"\n") }]); | ||
f.push(['結合 "a" \u203A "b"\u21B5 → ["a","b"]',"L",function(_){ //2015 | f.push(['結合 "a" \u203A "b"\u21B5 → ["a","b"]',"L",function(_){ //2015-03-14 | ||
return _.replace(/\n?(((".*"|'.*'|\/.*\/[gim]*)\t(".*"|'.*')\n*)+)/g,function(s,r){return r.replace(/(".*"|'.*'|\/.*\/[gim]*)\t(".*"|'.*')\n*/g,"[$1,$2],").replace(/,$/,"")}) }]); | return _.replace(/\n?(((".*"|'.*'|\/.*\/[gim]*)\t(".*"|'.*')\n*)+)/g,function(s,r){return r.replace(/(".*"|'.*'|\/.*\/[gim]*)\t(".*"|'.*')\n*/g,"[$1,$2],").replace(/,$/,"")}) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,436行目: | 1,436行目: | ||
== 拡張コード:書式 == | == 拡張コード:書式 == | ||
=== コマンド === | === コマンド === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["コマンド名","オプション",function(引数){ 処理 }]); | f.push(["コマンド名","オプション",function(引数){ 処理 }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,467行目: | 1,467行目: | ||
=== サブメニュー === | === サブメニュー === | ||
サブメニューを設けます。サブメニュー内サブメニュー(階層化)も可能です。 | サブメニューを設けます。サブメニュー内サブメニュー(階層化)も可能です。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["メニュー名",function(f){ | f.push(["メニュー名",function(f){ | ||
/* コマンド or サブメニュー or セパレーター */ | /* コマンド or サブメニュー or セパレーター */ | ||
| 1,477行目: | 1,477行目: | ||
※半角ハイフン <code>-</code> は何個でも含められますが、他の文字は含められません。 | ※半角ハイフン <code>-</code> は何個でも含められますが、他の文字は含められません。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["--------"]); | f.push(["--------"]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,483行目: | 1,483行目: | ||
=== replaceBatch メソッド === | === replaceBatch メソッド === | ||
<code>replace</code> を連鎖させる記法(メソッドチェーン)の省略記法です。 | <code>replace</code> を連鎖させる記法(メソッドチェーン)の省略記法です。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["例 replaceBatch","s",function(_){ | f.push(["例 replaceBatch","s",function(_){ | ||
return _.replaceBatch([ ["ABC","DEF"],["(1)","①"],[/GHI/gi,"JKL"] ]) }]); | return _.replaceBatch([ ["ABC","DEF"],["(1)","①"],[/GHI/gi,"JKL"] ]) }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
上記の処理は、下記と同じ処理になります。 | 上記の処理は、下記と同じ処理になります。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
f.push(["例 replace","s",function(_){ | f.push(["例 replace","s",function(_){ | ||
return _.replace(/ABC/g,"DEF").replace(/\(1\)/g,"①").replace(/GHI/gi,"JKL") }]); | return _.replace(/ABC/g,"DEF").replace(/\(1\)/g,"①").replace(/GHI/gi,"JKL") }]); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
スポンサーリンク