{"id":6964,"date":"2024-11-12T11:29:38","date_gmt":"2024-11-12T02:29:38","guid":{"rendered":"https:\/\/code-plus.jp\/gp\/?page_id=6964"},"modified":"2026-06-09T14:41:53","modified_gmt":"2026-06-09T05:41:53","slug":"table-converter","status":"publish","type":"page","link":"https:\/\/code-plus.jp\/gp\/tools\/table-converter\/","title":{"rendered":"&nbsp;|\uff08\u30d1\u30a4\u30d7\uff09\u3092Table\u30bf\u30b0\u306b\u5909\u63db\u30c4\u30fc\u30eb | Markdown\u8868\u5f62\u5f0f\u2192HTML\u81ea\u52d5\u5909\u63db"},"content":{"rendered":"<!-- \u0f3b\u273f\ud835\udc0f\ud835\udc00\ud835\udc06\ud835\udc04\u0f3a -->\r\n<!-- \u0f3b.mezzala\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0a\uff09\u0f3a -->\r\n<hr class=\"spacer-mezzala\" \/>\r\n\r\n\r\n\r\n\r\n<hr id=\"ch-TextConverter\" anchor \/>\r\n<div class=\"pg-saracnvtvkaa bg-hackingGate bg-hackingGate bg-hackingGate bg-hackingGate\">\r\n\r\n  <header class=\"page-header mx-auto\">\r\n    <!-- \u2756\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8 --><div><!-- breadcrumb.php -->\n<style>\n\/* \u2756breadcrumb.leckermaul\uff08\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8\uff09\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u0f1a\u0f36\u22b0\u27e1\u22b1\u0f36\u0f1a\u0f3a *\/\n.zaratan .breadcrumb.leckermaul {\n\twidth: 100%;\n\tmax-width: 92.5vw;\n\tmargin-inline: auto;\n}\n\n.zaratan .breadcrumb.leckermaul :is(ul, ol) {\n\tmin-height: 3rem;\n\tline-height: initial;\n\tfont-size: 0;\n\tletter-spacing: 0;\n\toverflow: hidden;\n}\n\n.zaratan .breadcrumb.leckermaul li {\n\tdisplay: inline;\n\tline-height: 1.55;\n\tfont-size: clamp(0.775rem, calc(0.775rem + ((1vw - 0.225rem) * 0.1563)), 0.8750rem);\n}\n\n.zaratan .breadcrumb.leckermaul li>*,\n.zaratan .breadcrumb.leckermaul li::before {\n\tposition: relative;\n\ttop: 0.125em;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n.zaratan .breadcrumb.leckermaul a {\n\tdisplay: inline;\n\tcolor: var(--c-text-300, hsl(233, 6%, 74%));\n\tmargin-right: .5em;\n}\n\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2) a {\n\tmargin-left: .5em;\n}\n\n.zaratan .breadcrumb.leckermaul .current_page_item a {\n\tpointer-events: none;\n\tcolor: var(--c-text-300, hsl(233, 6%, 74%));\n}\n\n@media (any-hover:hover) {\n\t.zaratan .breadcrumb.leckermaul a:hover {\n\t\tcolor: var(--c-text-300, hsl(233, 6%, 74%));\n\t}\n}\n\n\/* .separator *\/\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2)::before,\n.zaratan .breadcrumb.leckermaul.chevron-right li:nth-of-type(n+2)::before {\n\tcontent: \">\";\n\tcolor: var(--c-text-300, hsl(233, 6%, 74%))\n}\n\n.zaratan .breadcrumb.leckermaul.slash li:nth-of-type(n+2)::before {\n\tcontent: \"\/\";\n}\n\n.zaratan .breadcrumb.leckermaul.trigon-bullet li:nth-of-type(n+2)::before {\n\tcontent: \"\u2023\";\n}\n<\/style>\n\n\n<nav class=\"breadcrumb leckermaul mx-auto py-0.5r\">\n  <ul class=\"breadcrumb-wrapper\">\n    <!-- \u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u8868\u793a -->\n    <li><a href=\"https:\/\/code-plus.jp\/gp\/\"><i><\/i>\u30c8\u30c3\u30d7<\/a><\/li>\n\n          <!-- \u56fa\u5b9a\u30da\u30fc\u30b8\uff08\u305d\u308c\u4ee5\u5916\uff09\uff1a \u5148\u7956\u30da\u30fc\u30b8\u540d\u3068\u3001\u73fe\u5728\u306e\u30da\u30fc\u30b8\u540d\u3092\u8868\u793a -->\n      <li><a href=\"https:\/\/code-plus.jp\/gp\/tools\/\">TOOLS\uff08\u30c4\u30fc\u30eb\u4e00\u89a7\uff09<\/a><\/li><li class=\"current_page_item\"><a>\u30c4\u30fc\u30eb<\/a><\/li>    <!-- \/\/\/if (is_page()) -->\n\n  <\/ul>\n<\/nav><\/div>\r\n  <\/header><!-- \/\/\/.inheader -->\r\n\r\n\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <section class=\"sect-cnvtVkaA-Intro\" style=\"contain-intrinsic-size:1000px;\">\r\n    <header class=\"section__inheader mx-auto scroll-fadeIn\">\r\n      <div class=\"hgroup-wrapper d-iblock mb-0.5r\">\r\n        <h1 class=\"fz-xxl hdg-page mb-0.25pc\"><span>&nbsp;|\uff08\u30d1\u30a4\u30d7\uff09\u3092Table\u30bf\u30b0\u306b\u5909\u63db\u30c4\u30fc\u30eb | Markdown\u8868\u5f62\u5f0f\u2192HTML\u81ea\u52d5\u5909\u63db<\/span><\/h1>\r\n        <p class=\"page-foreword fz-ss\">\u30d1\u30a4\u30d7\u533a\u5207\u308a\u306e\u30c6\u30ad\u30b9\u30c8\u3092HTML\u306etable\u30bf\u30b0\u306b\u81ea\u52d5\u5909\u63db\u3059\u308b\u30c4\u30fc\u30eb\u3067\u3059\u3002\u30c6\u30fc\u30d6\u30eb\u3001\u30ea\u30b9\u30c8\u8a18\u6cd5\u3092\u30b5\u30dd\u30fc\u30c8\u3002HTML\u2192Markdown\u9006\u5909\u63db\u3082\u53ef\u80fd\u3002<\/p>\r\n      <\/div><!-- \/\/\/.hgroup -->\r\n\r\n      <p class=\"rowgroup fl-right bdrs-0.25r\">\r\n        <a class=\"badge is-outlined is-gray fz-xs\" href=\"https:\/\/code-plus.jp\/gp\/tools\/deline-converter\/\"><span> | \u2192 &lt;dl&gt;<\/span><\/a>\r\n        <a class=\"badge is-outlined is-gray fz-xs\" href=\"https:\/\/code-plus.jp\/gp\/tools\/table-converter\/\"><span> | \u2192 &lt;table&gt;<\/span><\/a>\r\n        <a class=\"badge is-outlined is-gray fz-xs bdrsr-0.25r\" href=\"#ch-Explanation\"><i class=\"icon mas ma-help\"><\/i>&nbsp;<span>\u4f7f\u3044\u65b9<\/span><\/a>\r\n      <\/p>\r\n    <\/header><!-- \/\/\/.inheader -->\r\n  <\/section>\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <hr id=\"ch-Converter\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Converter\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior fxd-row mx-auto\">\r\n      <figure class=\"section__leftlane\">\r\n        <div class=\"hgroup-wrapper\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u30c6\u30ad\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044<\/span><\/h3>\r\n        <\/div><!-- \/\/\/.hgroup -->\r\n\r\n        <div class=\"chest-wrapper relatived\">\r\n          <textarea id=\"encodeArea\" class=\"textarea\" style=\"height:17.5pc;\" placeholder=\"\u3053\u3053\u306b\u30c6\u30ad\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"><\/textarea>\r\n          <ins id=\"decodedMessage\"><\/ins>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <!-- \u30aa\u30d7\u30b7\u30e7\u30f3 -->\r\n        <!-- <div class=\"colgroup w-full mt-1r\"><\/div> -->\r\n\r\n        <div class=\"colgroup w-full mt-1r\">\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagDelimits\">&nbsp;<input type=\"text\" id=\"targetDelimiterDl\" class=\"input w-4e\" value='|'>&nbsp;\u3092 \u2192 &lt;dl&gt;\u30bf\u30b0 \u306b\u5909\u63db<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagTables\" checked>&nbsp;<input type=\"text\" id=\"targetDelimiterTable\" class=\"input w-4e\" value='|'>&nbsp;\u3092 \u2192 &lt;table&gt;\u30bf\u30b0 \u306b\u5909\u63db<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"mergeCells\" checked>\u30bb\u30eb\u306e\u7d50\u5408\uff08 &lt; &gt; \u6a2a\u7d50\u5408 \/ ^ \u7e26\u7d50\u5408 \uff09<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagTd2Ths\" checked>&lt;table&gt;\u5404\u884c\u6700\u521d\u306e\u30bb\u30eb\u3092 \u2192 &lt;th&gt; \u306b\u5909\u63db<\/label>\r\n\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"encloseTagImgPictures\" checked>&lt;img \/&gt;\u3092 \u2192 &lt;picture&gt; \u3067\u56f2\u3080<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagBreaks_inP\" checked>&lt;p&gt;\u5185\u306e\u6539\u884c\u3092 \u2192 &lt;br \/&gt; \u306b\u5909\u63db<\/label>\r\n\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase1s\" checked>\r\n            <input type=\"text\" id=\"targetAddClase1\" class=\"input w-8e\" value='table'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\r\n            <input type=\"text\" id=\"afterAddClase1\" class=\"input w-11e\" value='table tbl-responsive'>&nbsp;\u8ffd\u52a0\r\n          <\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase2s\" checked>\r\n            <input type=\"text\" id=\"targetAddClase2\" class=\"input w-8e\" value='tr'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\r\n            <input type=\"text\" id=\"afterAddClase2\" class=\"input w-11e\" value='rung'>&nbsp;\u8ffd\u52a0\r\n          <\/label>\r\n\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag3s\">\r\n            <input type=\"text\" id=\"targetUpdateTag3\" class=\"input w-11e\" value='&lt;table class=\"table\"&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\r\n            <input type=\"text\" id=\"afterUpdateTag3\" class=\"input w-11e\" value='&lt;dl class=\"delimit\"&gt;'>&nbsp;\u306b\u5909\u63db\r\n          <\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag4s\">\r\n            <input type=\"text\" id=\"targetUpdateTag4\" class=\"input w-11e\" value='&lt;tr class=\"rung\"&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\r\n            <input type=\"text\" id=\"afterUpdateTag4\" class=\"input w-11e\" value='&lt;div class=\"rung\"&gt;'>&nbsp;\u306b\u5909\u63db\r\n          <\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag5s\">\r\n            <input type=\"text\" id=\"targetUpdateTag5\" class=\"input w-11e\" value='&lt;th&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\r\n            <input type=\"text\" id=\"afterUpdateTag5\" class=\"input w-11e\" value='&lt;dt&gt;'>&nbsp;\u306b\u5909\u63db\r\n          <\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag6s\">\r\n            <input type=\"text\" id=\"targetUpdateTag6\" class=\"input w-11e\" value='&lt;td&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\r\n            <input type=\"text\" id=\"afterUpdateTag6\" class=\"input w-11e\" value='&lt;dd&gt;'>&nbsp;\u306b\u5909\u63db\r\n          <\/label>\r\n        <\/div><!-- \/\/\/.colgroup -->\r\n      <\/figure><!-- \/\/\/.leftlane -->\r\n\r\n      <figure class=\"section__centerlane\">\r\n        <aside class=\"sticky-sidebar fxd-column pc-center\">\r\n          <a class=\"button is-solided is-primary\" href=\"#ch-Converter\" onclick=\"encodeText()\"><span>\u5909\u63db&nbsp;\u00bb<\/span><\/a>\r\n          <a class=\"button is-solided is-primary mt-2r\" href=\"#ch-Converter\" onclick=\"decodeText()\"><span>\u00ab&nbsp;\u5909\u63db<\/span><\/a>\r\n        <\/aside>\r\n      <\/figure><!-- \/\/\/.centerlane -->\r\n\r\n\r\n      <figure class=\"section__rightlane\">\r\n        <div class=\"chest-wrapper relatived\">\r\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u5909\u63db\u5f8c\u306e\u30c6\u30ad\u30b9\u30c8<\/span><\/h3>\r\n          <textarea class=\"textarea\" id=\"decodeArea\" style=\"height:17.5pc;\" placeholder=\"\u3053\u3053\u306b\u5909\u63db\u5f8c\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\"><\/textarea>\r\n          <ins id=\"encodedMessage\"><\/ins>\r\n        <\/div><!-- \/\/\/.chest -->\r\n\r\n        <div class=\"colgroup w-full mt-1r\">\r\n          <!-- \u30aa\u30d7\u30b7\u30e7\u30f3 -->\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeTagTables\" checked>&lt;table&gt;\u30bf\u30b0\u3092 \u2192 &nbsp;|\uff08\u30d1\u30a4\u30d7\uff09 \u306b\u30c7\u30b3\u30fc\u30c9<\/label>\r\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeHtml2Md\" checked>HTML\u3092 \u2192 Markdown\u8a18\u6cd5 \u306b\u30c7\u30b3\u30fc\u30c9<\/label>\r\n        <\/div><!-- \/\/\/.colgroup -->\r\n      <\/figure><!-- \/\/\/.rightlane -->\r\n    <\/div><!-- \/\/\/.interior.fxd-row -->\r\n  <\/section>\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\r\n  <hr id=\"ch-Explanation\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Explanation pt-3r\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\r\n      <div class=\"box is-broad is-solided c-text\">\r\n        <h4 class=\"hdg-explanation fz-md mb-0.25pc\">\u4f7f\u3044\u65b9<\/h4>\r\n        <p class=\"fz-ss mb-1r\">\u5de6\u5074\u306e\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306b\u30d1\u30a4\u30d7\uff08|\uff09\u533a\u5207\u308a\u306e\u30c6\u30fc\u30d6\u30eb\u3092\u5165\u529b\u3057\u3001\u300c\u5909\u63db \u00bb\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u53f3\u5074\u306bHTML\u306e &lt;table&gt; \u30bf\u30b0\u306b\u5909\u63db\u3055\u308c\u305f\u30b3\u30fc\u30c9\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\r\n\r\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.25pc mt-2r\">\ud83d\udcdd \u57fa\u672c\u306e\u66f8\u304d\u65b9<\/h5>\r\n        <pre class=\"fz-ss\" style=\"background:var(--color-bg-input,#f7f8f9);padding:0.75em 1em;border-radius:4px;overflow-x:auto;\"><code>| \u898b\u51fa\u30571 | \u898b\u51fa\u30572 | \u898b\u51fa\u30573 |\r\n|---------|---------|---------|\r\n| \u30c7\u30fc\u30bf1 | \u30c7\u30fc\u30bf2 | \u30c7\u30fc\u30bf3 |<\/code><\/pre>\r\n        <p class=\"fz-ss mt-0.5r\">\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\uff08<code>|------|------|<\/code>\uff09\u304c\u3042\u308b\u3068\u3001\u305d\u306e\u4e0a\u306e\u884c\u304c &lt;thead&gt; \u306b\u3001\u4e0b\u306e\u884c\u304c &lt;tbody&gt; \u306b\u5206\u5272\u3055\u308c\u307e\u3059\u3002\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u304c\u306a\u3051\u308c\u3070\u5168\u884c\u304c &lt;tbody&gt; \u306b\u5165\u308a\u307e\u3059\u3002<\/p>\r\n\r\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.25pc mt-2r\">\ud83d\udd17 \u30bb\u30eb\u306e\u7d50\u5408<\/h5>\r\n        <p class=\"fz-ss mb-0.5r\">\u30bb\u30eb\u306e\u5185\u5bb9\u306b\u8a18\u53f7\u3092\u66f8\u304f\u3053\u3068\u3067\u3001\u96a3\u63a5\u3059\u308b\u30bb\u30eb\u3092\u7d50\u5408\uff08colspan \/ rowspan\uff09\u3067\u304d\u307e\u3059\u3002<\/p>\r\n\r\n        <p class=\"fz-ss\"><b class=\"bold\">\u6a2a\u7d50\u5408\uff08\u5de6\u65b9\u5411\uff09<\/b> \u2014 \u30bb\u30eb\u306b <code>&lt;<\/code> \u3068\u66f8\u304f\u3068\u5de6\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u307e\u3059\u3002<\/p>\r\n        <pre class=\"fz-ss\" style=\"background:var(--color-bg-input,#f7f8f9);padding:0.75em 1em;border-radius:4px;overflow-x:auto;\"><code>| \u30bb\u30af\u30b7\u30e7\u30f3\u898b\u51fa\u3057 | &lt;  | &lt;  |  \u2192  colspan=\"3\"<\/code><\/pre>\r\n\r\n        <p class=\"fz-ss mt-1r\"><b class=\"bold\">\u6a2a\u7d50\u5408\uff08\u53f3\u65b9\u5411\uff09<\/b> \u2014 \u30bb\u30eb\u306b <code>&gt;<\/code> \u3068\u66f8\u304f\u3068\u53f3\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u307e\u3059\u3002<\/p>\r\n        <pre class=\"fz-ss\" style=\"background:var(--color-bg-input,#f7f8f9);padding:0.75em 1em;border-radius:4px;overflow-x:auto;\"><code>| &gt;  | &gt;  | \u30bb\u30af\u30b7\u30e7\u30f3\u898b\u51fa\u3057 |  \u2192  colspan=\"3\"<\/code><\/pre>\r\n\r\n        <p class=\"fz-ss mt-1r\"><b class=\"bold\">\u7e26\u7d50\u5408<\/b> \u2014 \u30bb\u30eb\u306b <code>^<\/code> \u3068\u66f8\u304f\u3068\u4e0a\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u307e\u3059\u3002<\/p>\r\n        <pre class=\"fz-ss\" style=\"background:var(--color-bg-input,#f7f8f9);padding:0.75em 1em;border-radius:4px;overflow-x:auto;\"><code>| \u30ab\u30ab\u30c8\u30b4\u30e0\u53d6\u66ff | \u5c0f | 1,650\u5186 |\r\n| ^              | \u4e2d | 2,200\u5186 |  \u2192  rowspan=\"3\"\r\n| ^              | \u5927 | 2,750\u5186 |<\/code><\/pre>\r\n\r\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.25pc mt-2r\">\u2699\ufe0f \u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3<\/h5>\r\n        <p class=\"fz-ss\"><b class=\"bold\">\u5148\u982d\u30bb\u30eb\u3092 &lt;th&gt; \u306b\u5909\u63db<\/b>\uff1a\u5404\u884c\u306e\u6700\u521d\u306e\u30bb\u30eb\u3092\u81ea\u52d5\u3067 &lt;th&gt; \u30bf\u30b0\u306b\u5909\u63db<\/p>\r\n        <p class=\"fz-ss\"><b class=\"bold\">&lt;img&gt; \u3092 &lt;picture&gt; \u3067\u56f2\u3080<\/b>\uff1a\u753b\u50cf\u30bf\u30b0\u3092picture\u30bf\u30b0\u3067\u5305\u3080<\/p>\r\n        <p class=\"fz-ss\"><b class=\"bold\">\u30af\u30e9\u30b9\u5c5e\u6027\u8ffd\u52a0<\/b>\uff1atable\u3001div\u7b49\u306e\u30bf\u30b0\u306b\u4efb\u610f\u306e\u30af\u30e9\u30b9\u3092\u81ea\u52d5\u4ed8\u4e0e<\/p>\r\n        <p class=\"fz-ss\"><b class=\"bold\">\u30bf\u30b0\u5909\u63db<\/b>\uff1a\u6307\u5b9a\u306eHTML\u30bf\u30b0\u3092\u5225\u306e\u30bf\u30b0\u306b\u4e00\u62ec\u5909\u63db<\/p>\r\n      <\/div><!-- \/\/\/.box -->\r\n    <\/div><!-- \/\/\/.interior -->\r\n  <\/section><!-- \/\/\/.section -->\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc03\ud835\udc04\ud835\udc0f\ud835\udc00\ud835\udc11\ud835\udc13\ud835\udc0c\ud835\udc04\ud835\udc0d\ud835\udc13\u0f3a -->\r\n  <hr id=\"ch-Relation\" anchor \/>\r\n  <section class=\"sect-cnvtVkaA-Relation pt-3r\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\r\n      <div class=\"hgroup-wrapper mb-0.5pc\">\r\n        <h5 class=\"hdg-relation fz-rg\"><span>\u95a2\u9023\u30c4\u30fc\u30eb<\/span><\/h5>\r\n      <\/div><!-- \/\/\/.hgroup -->\r\n\r\n      <ul class=\"shelf-wrapper_pc shelfA\" data-cols_pc=\"2\">\r\n        <li class=\"slide\">\r\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/breaks-converter\/\" class=\"linkbox\">\r\n            <h4 class=\"linkbox-title fz-md\">\u6539\u884c\u30fb\u30bf\u30d6\u5909\u63db\u30c4\u30fc\u30eb - &#013;&#010; &lt;br&gt; A HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30fbbr\u30bf\u30b0\u4e00\u62ec\u5909\u63db<\/h4>\r\n            <picture class=\"linkbox-thumbnail\">\r\n              <img decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/code-plus.jp\/gp\/wp-content\/uploads\/5dc4f11c526c68a340dba4c8910120dd.png?ver=20260609144153\" alt=\"\u6539\u884c\u30fb\u30bf\u30d6\u5909\u63db\u30c4\u30fc\u30eb - &#013;&#010; &lt;br&gt; A HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30fbbr\u30bf\u30b0\u4e00\u62ec\u5909\u63db\" loading=\"lazy\" \/>\r\n            <\/picture>\r\n            <span class=\"linkbox-excerpt\">\u30c6\u30ad\u30b9\u30c8\u306e\u6539\u884c\u3092\u3001\u3001A\u306b\u4e00\u62ec\u5909\u63db\u3002HTML\u30e1\u30fc\u30eb\u306ealt\u5c5e\u6027\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u8abf\u6574\u3067\u306e\u6539\u884c\u524a\u9664\u3001CSS\u306econtent\u7528\u6539\u884c\u306a\u3069\u3001\u5b9f\u52d9\u3067\u4f7f\u3048\u308b\u591a\u6a5f\u80fd\u5909\u63db\u30c4\u30fc\u30eb\u3002\r\n            <\/span>\r\n          <\/a>\r\n        <\/li>\r\n        <li class=\"slide\">\r\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/table-converter\/\" class=\"linkbox\">\r\n            <h4 class=\"linkbox-title fz-md\"> |\uff08\u30d1\u30a4\u30d7\uff09\u3092Table\u30bf\u30b0\u306b\u5909\u63db\u30c4\u30fc\u30eb | Markdown\u8868\u5f62\u5f0f\u2192HTML\u81ea\u52d5\u5909\u63db<\/h4>\r\n            <picture class=\"linkbox-thumbnail\">\r\n              <img decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/code-plus.jp\/gp\/wp-content\/uploads\/ed713607a8503186c9303c0b0a88726c.png?ver=20260609144153\" alt=\" |\uff08\u30d1\u30a4\u30d7\uff09\u3092Table\u30bf\u30b0\u306b\u5909\u63db\u30c4\u30fc\u30eb | Markdown\u8868\u5f62\u5f0f\u2192HTML\u81ea\u52d5\u5909\u63db\" loading=\"lazy\" \/>\r\n            <\/picture>\r\n            <span class=\"linkbox-excerpt\">\u30d1\u30a4\u30d7\u533a\u5207\u308a\u306e\u30c6\u30ad\u30b9\u30c8\u3092HTML\u306etable\u30bf\u30b0\u306b\u81ea\u52d5\u5909\u63db\u3002Markdown\u8a18\u6cd5\u304b\u3089WordPress\u6295\u7a3f\u7528HTML\u3001\u6280\u8853\u6587\u66f8\u4f5c\u6210\u3001CMS\u6295\u7a3f\u306b\u6700\u9069\u3002\u30af\u30e9\u30b9\u81ea\u52d5\u4ed8\u4e0e\u3067\u5b9f\u52d9\u5bfe\u5fdc\u3002\r\n            <\/span>\r\n          <\/a>\r\n        <\/li>\r\n      <\/ul><!-- \/\/\/.shelf -->\r\n    <\/div><!-- \/\/\/.interior -->\r\n  <\/section><!-- \/\/\/.section -->\r\n\r\n\r\n  <!-- \u0f3b\u00a7\ud835\udc03\ud835\udc04\ud835\udc0f\ud835\udc00\ud835\udc11\ud835\udc13\ud835\udc0c\ud835\udc04\ud835\udc0d\ud835\udc13\u0f3a -->\r\n\r\n  <section class=\"sect-cnvtVkaA-Relation2 pt-3r\" style=\"contain-intrinsic-size:1000px;\">\r\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\r\n      <div class=\"hgroup-wrapper mb-0.5pc\">\r\n\r\n      <\/div><!-- \/\/\/.hgroup -->\r\n\r\n\r\n    <\/div><!-- \/\/\/.interior -->\r\n  <\/section><!-- \/\/\/.section -->\r\n\r\n\r\n\r\n\r\n  <!-- \u0f3b.mediano\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0b\uff09\u0f3a -->\r\n  <hr class=\"spacer-mediano\" \/>\r\n\r\n<\/div><!-- \/\/\/\u25b2.page  -->\r\n\r\n\r\n\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/marked\/marked.min.js\"><\/script>\r\n<script src=\"https:\/\/unpkg.com\/turndown\/dist\/turndown.js\"><\/script>\r\n<script>\r\n  \/\/\u5de6\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2 \u2192 \u53f3\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3078\u306e\u5909\u63db\r\n  function encodeText() {\r\n    let encode_area = document.getElementById('encodeArea');\r\n    let decode_area = document.getElementById('decodeArea');\r\n    let text = encode_area.value;\r\n\r\n    \/\/ \u533a\u5207\u308a\u6587\u5b57\u3092 | \u306b\u7d71\u4e00\uff08\u30c6\u30fc\u30d6\u30eb\u30fbDL\u5909\u63db\u524d\u306b\u5b9f\u884c\uff09\r\n    const useDl = document.getElementById('convertTagDelimits').checked;\r\n    const useTable = document.getElementById('convertTagTables').checked;\r\n    if (useDl) {\r\n      const dlDelimiter = document.getElementById('targetDelimiterDl').value;\r\n      if (dlDelimiter && dlDelimiter !== '|') { text = replaceDelimiter(text, dlDelimiter); }\r\n    }\r\n    if (useTable) {\r\n      const tableDelimiter = document.getElementById('targetDelimiterTable').value;\r\n      if (tableDelimiter && tableDelimiter !== '|') { text = replaceDelimiter(text, tableDelimiter); }\r\n    }\r\n\r\n    \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u5185\u306e < > ^ \u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\uff08HTML\u5909\u63db\u524d\u306b\u5b9f\u884c\uff09\r\n    const useMergeCells = document.getElementById('mergeCells').checked;\r\n    if (useMergeCells) { text = preMergeCells(text); }\r\n\r\n    if (useDl) { text = convertTagDelimits(text); }\r\n    if (useTable) { text = convertTagTables(text); }\r\n    if (document.getElementById('convertTagTd2Ths').checked) { text = convertTagTd2Ths(text); }\r\n\r\n    \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u691c\u51fa\u3057\u3066colspan\/rowspan\u3092\u9069\u7528\uff08HTML\u5909\u63db\u5f8c\u306b\u5b9f\u884c\uff09\r\n    if (useMergeCells) { text = mergeCells(text); }\r\n\r\n    if (document.getElementById('encloseTagImgPictures').checked) { text = encloseTagImgPictures(text); }\r\n    if (document.getElementById('convertTagBreaks_inP').checked) { text = convertTagBreaks_inP(text); }\r\n\r\n    \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u306b\u3001\u4efb\u610f\u306e\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\r\n    if (document.getElementById('convertAddClase1s').checked ||\r\n      document.getElementById('convertAddClase2s').checked) {\r\n      text = processAllTagClasses(text);\r\n    }\r\n\r\n    \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u3092 \u2192 \u4efb\u610f\u306e\u30bf\u30b0 \u306b\u5909\u63db\r\n    if (document.getElementById('convertUpdateTag3s').checked ||\r\n      document.getElementById('convertUpdateTag4s').checked ||\r\n      document.getElementById('convertUpdateTag5s').checked ||\r\n      document.getElementById('convertUpdateTag6s').checked) {\r\n      text = processAllTagUpdates(text);\r\n    }\r\n\r\n    decode_area.value = text;\r\n    copyToClipboard(text, false);  \/\/isDecode = false\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/Markdown\u8a18\u6cd5\u3092 \u2192 HTML \u306b\u5909\u63db\r\n  function convertMd2Html(text) {\r\n    text = marked.parse(text);\r\n    text = text.replace(\/<pre><code>\/g, '<pre><code class=\"language-\">'); \/\/Prism.js\u5f62\u5f0f\u306b\u7f6e\u63db\r\n\r\n    \/\/<pre>\u30bf\u30b0\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4e00\u6642\u7684\u306b\u4fdd\u8b77\r\n    const preBlocks = [];\r\n    let preIndex = 0;\r\n\r\n    \/\/<pre>\uff5e<\/pre>\u306e\u30d6\u30ed\u30c3\u30af\u3092\u62bd\u51fa\u3057\u3066\u4e00\u6642\u7684\u306a\u30de\u30fc\u30ab\u30fc\u306b\u7f6e\u63db\r\n    text = text.replace(\/<pre[^>]*>[\\s\\S]*?<\\\/pre>\/g, function (match) {\r\n      const marker = `___PRE_BLOCK_${preIndex}___`;\r\n      preBlocks.push(match);\r\n      preIndex++;\r\n      return marker;\r\n    });\r\n\r\n    \/\/<pre>\u4ee5\u5916\u306e\u90e8\u5206\u306e\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u524a\u9664\r\n    text = text.split('\\n').map(line => line.trim()).filter(line => line !== '').join('\\n');\r\n\r\n    \/\/\u4fdd\u8b77\u3057\u3066\u3044\u305f<pre>\u30d6\u30ed\u30c3\u30af\u3092\u5143\u306b\u623b\u3059\r\n    preBlocks.forEach((block, index) => {\r\n      const marker = `___PRE_BLOCK_${index}___`;\r\n      text = text.replace(marker, block);\r\n    });\r\n\r\n    return text;\r\n  }\r\n\r\n\r\n\r\n  \/\/\u3059\u3079\u3066\u306e\u30bf\u30b0\u3092\u9664\u53bb\r\n  function removeTags(text) {\r\n    text = text.replace(\/<style\\b[^<]*(?:(?!<\\\/style>)<[^<]*)*<\\\/style>\/gi, '');  \/\/<style> \u30bf\u30b0\u3068\u305d\u306e\u5185\u5bb9\u3092\u524a\u9664\r\n    text = text.split('\\n').map(line => line.trim()).join('\\n');\r\n    text = text.replace(\/<[^>]*>\/g, '');\r\n    text = text.trim(); \/\/\u6700\u5f8c\u306b\u5148\u982d\u3068\u672b\u5c3e\u306e\u7a7a\u767d\u3092\u524a\u9664\r\n    return text;\r\n  }\r\n\r\n\r\n  \/\/< >\u3092 \u2192 &lt; &gt; \u306b\u5909\u63db\r\n  function convertEntityLtGts(text) { return text.replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;'); }\r\n\r\n\r\n  \/\/\u5168\u3066\u306e\u6539\u884c\u3092\u524a\u9664\r\n  function removeLineBreaks(text) { return text.replace(\/\\n\/g, ''); }\r\n\r\n  \/\/\u5358\u4e00\u6539\u884c\u3092\u524a\u9664\u3001\u9023\u7d9a\u6539\u884c\u306f\uff11\u3064\u6e1b\u3089\u3059\r\n  function adjustLineBreaks(text) {\r\n    text = text.replace(\/\\n\\n\\n\\n\/g, '<QuadrupleNewLine>');\r\n    text = text.replace(\/\\n\\n\\n\/g, '<TripleNewLine>');\r\n    text = text.replace(\/\\n\\n\/g, '<DoubleNewLine>');\r\n    text = text.replace(\/\\n\/g, '');\r\n    text = text.replace(\/<QuadrupleNewLine>\/g, '\\n\\n\\n');\r\n    text = text.replace(\/<TripleNewLine>\/g, '\\n\\n');\r\n    text = text.replace(\/<DoubleNewLine>\/g, '\\n');\r\n    return text;\r\n  }\r\n\r\n  \/\/\u6539\u884c\u3092 \u2192 <br \/> \u306b\u5909\u63db\r\n  function convertTagBreaks(text) { return text.replace(\/\\n\/g, '<br \/>\\n'); }\r\n\r\n  \/\/\u6539\u884c\u3092 \u2192 &#13;&#10; \u306b\u5909\u63db\r\n  function convertEntityNewLines(text) { return text.replace(\/\\n\/g, '&#13;&#10;'); }\r\n\r\n  \/\/\u6539\u884c\u3092 \u2192 \\A \u306b\u5909\u63db\r\n  function convertULineFeeds(text) { return text.replace(\/\\n\/g, '\\\\A'); }\r\n\r\n  \/\/\u30bf\u30d6\uff08\\t\uff09\u3092 \u2192 &#9; \u306b\u5909\u63db\r\n  function convertEntityTabs(text) { return text.replace(\/\\t\/g, '&#9;'); }\r\n\r\n  \/\/n+1\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\r\n  function convertNthBreak2Tabs(text) {\r\n    const pattern = document.getElementById('nthBreakCount').value.trim();\r\n\r\n    \/\/\u30d1\u30bf\u30fc\u30f3\u306e\u89e3\u6790\r\n    let nth = 2; \/\/\u30c7\u30d5\u30a9\u30eb\u30c8\u306f2\u756a\u76ee\uff08\u5076\u6570\u756a\u76ee\uff09\r\n\r\n    if (pattern === 'n+1' || pattern === 'odd') {\r\n      \/\/\u5947\u6570\u756a\u76ee\uff081, 3, 5...\uff09\u306e\u6539\u884c\r\n      nth = 'odd';\r\n    } else if (pattern === 'n' || pattern === 'even') {\r\n      \/\/\u5076\u6570\u756a\u76ee\uff082, 4, 6...\uff09\u306e\u6539\u884c\r\n      nth = 'even';\r\n    } else if (pattern.match(\/^\\d+$\/)) {\r\n      \/\/\u7279\u5b9a\u306e\u756a\u53f7\u6307\u5b9a\uff082, 3, 4...\uff09\r\n      nth = parseInt(pattern);\r\n    }\r\n\r\n    \/\/\u884c\u3054\u3068\u306b\u5206\u5272\r\n    const lines = text.split('\\n');\r\n\r\n    if (nth === 'odd') {\r\n      \/\/\u5947\u6570\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\uff082\u884c\u305a\u3064\u30da\u30a2\u306b\u3059\u308b\uff09\r\n      const result = [];\r\n      for (let i = 0; i < lines.length; i += 2) {\r\n        if (i + 1 < lines.length) {\r\n          result.push(lines[i] + '\\t' + lines[i + 1]);\r\n        } else {\r\n          result.push(lines[i]);\r\n        }\r\n      }\r\n      return result.join('\\n');\r\n    } else if (nth === 'even') {\r\n      \/\/\u5076\u6570\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\r\n      const result = [];\r\n      for (let i = 0; i < lines.length; i++) {\r\n        if (i % 2 === 0 && i + 1 < lines.length) {\r\n          \/\/\u6b21\u306e\u884c\u3092\u8ffd\u52a0\u3057\u306a\u3044\uff08\u6b21\u306e\u30eb\u30fc\u30d7\u3067\u51e6\u7406\uff09\r\n          continue;\r\n        } else if (i % 2 === 1) {\r\n          \/\/\u524d\u306e\u884c\u3068\u30bf\u30d6\u3067\u7d50\u5408\r\n          result.push(lines[i - 1] + '\\t' + lines[i]);\r\n        } else {\r\n          \/\/\u6700\u5f8c\u306e\u884c\u304c\u5947\u6570\u756a\u76ee\u306e\u5834\u5408\r\n          result.push(lines[i]);\r\n        }\r\n      }\r\n      return result.join('\\n');\r\n    } else if (typeof nth === 'number' && nth > 0) {\r\n      \/\/\u7279\u5b9a\u756a\u53f7\u3054\u3068\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\r\n      const result = [];\r\n      let currentGroup = [];\r\n\r\n      for (let i = 0; i < lines.length; i++) {\r\n        currentGroup.push(lines[i]);\r\n\r\n        if (currentGroup.length === nth || i === lines.length - 1) {\r\n          result.push(currentGroup.join('\\t'));\r\n          currentGroup = [];\r\n        }\r\n      }\r\n      return result.join('\\n');\r\n    }\r\n\r\n    return text;\r\n  }\r\n\r\n  \/\/\uff12\u3064\u4ee5\u4e0a\u306e\u9023\u7d9a\u3059\u308b\u30b9\u30da\u30fc\u30b9\uff08\\s{X,}\uff09\u3092\u3001\u30bf\u30d6\uff08\\t\uff09 \u306b\u5909\u63db\r\n  function convert2spacesTabs(text, count) {\r\n    const regex = new RegExp(`\\\\s{${count},}`, 'g');\r\n    return text.replace(regex, '\\t');\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u5168\u89d2\u6587\u5b57\uff08\\x01-\\x7E\uff09\u3092 \u2192 \u303c \u306b\u5909\u63db\uff08\u3000|\u3001|\u3002|\u8a18\u53f7 \u306f\u9664\u5916\uff09\r\n  function convertFullWidths(text) {\r\n    return text\r\n      .replace(\/\u3000\/g, '\u2b1a')  \/\/\u5168\u89d2\u30b9\u30da\u30fc\u30b9\u3092 \u2192 \u2b1a \u306b\u5909\u63db\r\n      .replace(\/[^(?!.*(\u3000|\uff3f|\u2b1a|\u303c|\u3001|\u3002|\u30fb|\u2025|\u2026|\uff5e|\u203b|\u3012|\u25cf|\u25ef|\u25cc|\u25ce|\u25c9|\u29bf|\u25a0|\u25a1|\u25a3|\u25c6|\u25c7|\u25c8|\u25b2|\u25b3|\u25bc|\u25bd|\u25c0|\u25c1|\u25b6|\u25b7|\u2606|\u2605)).\\x01-\\x7E]\/g, '\u303c');\r\n  }\r\n\r\n  \/\/\u82f1\u5927\u6587\u5b57\u3092 \u2192 \u2341 \u306b\u5909\u63db\r\n  function convertAlphaUppers(text) { return text.replace(\/[A-Z]\/g, '\u2341'); }\r\n\r\n  \/\/\u82f1\u5c0f\u6587\u5b57\u3092 \u2192 \u29c4 \u306b\u5909\u63db\r\n  function convertAlphaLowers(text) { return text.replace(\/[a-z]\/g, '\u29c4'); }\r\n\r\n  \/\/\u6570\u5b57\u3092 \u2192 \u00f8 \u306b\u5909\u63db\r\n  function convertNumber0s(text) { return text.replace(\/[0-9]\/g, '\u00f8'); }\r\n\r\n  \/\/\u6570\u5b57\u3092 \u2192 \u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57 \u306b\u5909\u63db\uff080\u306f0\u306e\u307e\u307e\uff09\r\n  function convertNumberRandoms(text) { return text.replace(\/[1-9]\/g, () => Math.floor(Math.random() * 9) + 1); }\r\n\r\n  \/\/\u534a\u89d2()\u3092 \u2192 \u5168\u89d2\uff08\uff09 \u306b\u5909\u63db\r\n  function convertFullParenthesis(text) { return text.replace(\/\\(\/g, '\uff08').replace(\/\\)\/g, '\uff09'); }\r\n\r\n  \/\/\u5168\u89d2\uff08\uff09\u3092 \u2192 \u534a\u89d2() \u306b\u5909\u63db\r\n  function convertHalfParenthesis(text) { return text.replace(\/\uff08\/g, '(').replace(\/\uff09\/g, ')'); }\r\n\r\n\r\n\r\n\r\n  \/\/Markdown\u5f62\u5f0f\u306e\u756a\u53f7\uff08*. \uff09\u3092 \u2192 \u4e0a\u304b\u3089\u9023\u756a\u3067\u4ed8\u3051\u76f4\u3059\r\n  function convertRenumbers(text) {\r\n    \/\/\u884c\u3054\u3068\u306b\u5206\u5272\r\n    let lines = text.split('\\n');\r\n    let firstNumber = null;  \/\/\u6700\u521d\u306b\u898b\u3064\u3051\u305f\u756a\u53f7\u3092\u4fdd\u5b58\r\n    let currentNumber = null;  \/\/\u73fe\u5728\u306e\u9023\u756a\r\n    let hasNumberedLine = false;  \/\/\u756a\u53f7\u4ed8\u304d\u306e\u884c\u304c\u5b58\u5728\u3059\u308b\u304b\r\n\r\n    \/\/\u6700\u521d\u306e\u6709\u52b9\u306a\u756a\u53f7\u3092\u898b\u3064\u3051\u308b\r\n    for (let line of lines) {\r\n      const match = line.match(\/^(\\d+)\\.\\s+\/);\r\n      if (match) {\r\n        firstNumber = parseInt(match[1]);\r\n        currentNumber = firstNumber;\r\n        hasNumberedLine = true;\r\n        break;\r\n      }\r\n    }\r\n\r\n    \/\/\u756a\u53f7\u4ed8\u304d\u306e\u884c\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u51e6\u7406\u3057\u306a\u3044\r\n    if (!hasNumberedLine) {\r\n      return text;\r\n    }\r\n\r\n    \/\/\u5404\u884c\u3092\u51e6\u7406\r\n    const processedLines = lines.map(line => {\r\n      \/\/Markdown\u5f62\u5f0f\u306e\u756a\u53f7\u4ed8\u304d\u30ea\u30b9\u30c8\u306b\u30de\u30c3\u30c1\u3059\u308b\u6b63\u898f\u8868\u73fe\r\n      const match = line.match(\/^(\\d+)\\.\\s+(.+)$\/);\r\n\r\n      if (match) {\r\n        \/\/\u756a\u53f7\u306e\u90e8\u5206\u3092\u73fe\u5728\u306e\u9023\u756a\u3067\u7f6e\u63db\r\n        \/\/\u5143\u306e\u6570\u5b57\u306e\u6841\u6570\u306b\u5fdc\u3058\u3066\u30b9\u30da\u30fc\u30b9\u306e\u6570\u3092\u8abf\u6574\r\n        const originalNumLength = match[1].length;\r\n        const newNumLength = currentNumber.toString().length;\r\n        const spaceDiff = originalNumLength - newNumLength;\r\n        const extraSpaces = spaceDiff > 0 ? ' '.repeat(spaceDiff) : '';\r\n\r\n        const newLine = `${currentNumber}.${extraSpaces} ${match[2]}`;\r\n        currentNumber++;\r\n        return newLine;\r\n      }\r\n      return line;\r\n    });\r\n\r\n    return processedLines.join('\\n');\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/JSON\u5f62\u5f0f\u3067\u8907\u6570\u306e\u8a9e\u53e5\u3092\u307e\u3068\u3081\u3066\u524a\u9664\r\n  function removeMultiWords(text) {\r\n    try {\r\n      \/\/\u5165\u529b\u5024\u3092\u53d6\u5f97\u3057\u3066\u6574\u5f62\r\n      let removeTxts = document.getElementById('removeTxts').value;\r\n\r\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\r\n      function formatToJSON(input) {\r\n        \/\/\u65e2\u306bJSON\u5f62\u5f0f\u306e\u5834\u5408\u306f\u305d\u306e\u307e\u307e\u8fd4\u3059\r\n        try {\r\n          JSON.parse(input);\r\n          return input;\r\n        } catch {\r\n          \/\/[] \u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n          if (!input.startsWith('[') && !input.endsWith(']')) {\r\n            input = '[' + input + ']';\r\n          }\r\n\r\n          \/\/\u30ab\u30f3\u30de\u533a\u5207\u308a\u306e\u5404\u8981\u7d20\u3092\u51e6\u7406\r\n          const words = input.slice(1, -1).split(',').map(word => {\r\n            \/\/\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e\u3001\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u306e\u307f\u3092\u8ffd\u52a0\r\n            if (!word.startsWith('\"') && !word.endsWith('\"')) {\r\n              word = '\"' + word + '\"';\r\n            }\r\n            return word;\r\n          });\r\n\r\n          return '[' + words.join(',') + ']';\r\n        }\r\n      }\r\n\r\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\r\n      removeTxts = formatToJSON(removeTxts);\r\n\r\n      \/\/\u6574\u5f62\u3057\u305f\u5024\u3092\u5165\u529b\u6b04\u306b\u53cd\u6620\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\r\n      document.getElementById('removeTxts').value = removeTxts;\r\n\r\n      \/\/JSON\u3068\u3057\u3066\u30d1\u30fc\u30b9\r\n      const removeTxtsArray = JSON.parse(removeTxts);\r\n\r\n      \/\/\u5404\u8a9e\u53e5\u3092\u524a\u9664\r\n      removeTxtsArray.forEach(word => {\r\n        const escapedWord = word.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\r\n        const regex = new RegExp(escapedWord, 'g');\r\n        text = text.replace(regex, '');\r\n      });\r\n\r\n      return text;\r\n    } catch (error) {\r\n      console.error('\u524a\u9664\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u8a9e\u53e5\u306e\u6307\u5b9a\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n  \/\/JSON\u5f62\u5f0f\u3067\u8907\u6570\u306e\u8a9e\u53e5\u3092\u307e\u3068\u3081\u3066\u5909\u63db\r\n  function convertMultiWords(text) {\r\n    try {\r\n      \/\/\u5165\u529b\u5024\u3092\u53d6\u5f97\u3057\u3066\u6574\u5f62\r\n      let beforeTxts = document.getElementById('beforeTxts').value;\r\n      let afterTxts = document.getElementById('afterTxts').value;\r\n\r\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\r\n      function formatToJSON(input) {\r\n        \/\/\u65e2\u306bJSON\u5f62\u5f0f\u306e\u5834\u5408\u306f\u305d\u306e\u307e\u307e\u8fd4\u3059\r\n        try {\r\n          JSON.parse(input);\r\n          return input;\r\n        } catch {\r\n          \/\/[] \u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n          if (!input.startsWith('[') && !input.endsWith(']')) {\r\n            input = '[' + input + ']';\r\n          }\r\n\r\n          \/\/\u30ab\u30f3\u30de\u533a\u5207\u308a\u306e\u5404\u8981\u7d20\u3092\u51e6\u7406\r\n          const words = input.slice(1, -1).split(',').map(word => {\r\n            \/\/\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e\u3001\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u306e\u307f\u3092\u8ffd\u52a0\r\n            if (!word.startsWith('\"') && !word.endsWith('\"')) {\r\n              word = '\"' + word + '\"';\r\n            }\r\n            return word;\r\n          });\r\n\r\n          return '[' + words.join(',') + ']';\r\n        }\r\n      }\r\n\r\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\r\n      beforeTxts = formatToJSON(beforeTxts);\r\n      afterTxts = formatToJSON(afterTxts);\r\n\r\n      \/\/\u6574\u5f62\u3057\u305f\u5024\u3092\u5165\u529b\u6b04\u306b\u53cd\u6620\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\r\n      document.getElementById('beforeTxts').value = beforeTxts;\r\n      document.getElementById('afterTxts').value = afterTxts;\r\n\r\n      \/\/JSON\u3068\u3057\u3066\u30d1\u30fc\u30b9\r\n      const beforeTxtsArray = JSON.parse(beforeTxts);\r\n      const afterTxtsArray = JSON.parse(afterTxts);\r\n\r\n      \/\/\u4ee5\u964d\u306f\u65e2\u5b58\u306e\u30b3\u30fc\u30c9\r\n      if (beforeTxtsArray.length !== afterTxtsArray.length) {\r\n        throw new Error('\u5909\u63db\u524d\u3068\u5909\u63db\u5f8c\u306e\u8a9e\u53e5\u306e\u6570\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093');\r\n      }\r\n\r\n      beforeTxtsArray.forEach((beforeTxt, index) => {\r\n        const escapedFromWord = beforeTxt.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\r\n        const regex = new RegExp(escapedFromWord, 'g');\r\n        text = text.replace(regex, afterTxtsArray[index]);\r\n      });\r\n\r\n      return text;\r\n    } catch (error) {\r\n      console.error('\u5909\u63db\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u8a9e\u53e5\u306e\u6307\u5b9a\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3092 \u2192 <dl>\u30bf\u30b0 \u306b\u5909\u63db\r\n  function convertTagDelimits(text) {\r\n    \/\/\u6539\u884c\u3067\u5206\u5272\r\n    const lines = text.split('\\n');\r\n\r\n    \/\/\u5404\u884c\u3092\u51e6\u7406\r\n    const processedLines = lines.map(line => {\r\n      line = line.trim();\r\n      if (line === '') return '';\r\n\r\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u59cb\u307e\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n      if (!line.startsWith('|')) {\r\n        line = '|' + line;\r\n      }\r\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u7d42\u308f\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n      if (!line.endsWith('|')) {\r\n        line = line + '|';\r\n      }\r\n\r\n      return line;\r\n    }).filter(line => line !== ''); \/\/\u7a7a\u884c\u3092\u524a\u9664\r\n\r\n    if (processedLines.length === 0) return text;\r\n\r\n    \/\/Dl\u306eHTML\u69cb\u7bc9\r\n    let delimitHtml = '<dl class=\"delimit\">\\n';\r\n\r\n    processedLines.forEach(line => {\r\n      const cells = line.split('|')\r\n        .filter(cell => cell !== '') \/\/\u7a7a\u306e\u30bb\u30eb\u3092\u524a\u9664\r\n        .map(cell => cell.trim()); \/\/\u30bb\u30eb\u5185\u5bb9\u3092\u30c8\u30ea\u30e0\r\n\r\n      if (cells.length >= 2) { \/\/\u5c11\u306a\u304f\u3068\u30822\u3064\u306e\u30bb\u30eb\u304c\u3042\u308b\u5834\u5408\u306e\u307f\u51e6\u7406\r\n        delimitHtml += '  <div class=\"rung\">\\n';\r\n        delimitHtml += `    <dt>${cells[0]}<\/dt>\\n`;\r\n        for (let i = 1; i < cells.length; i++) {\r\n          delimitHtml += `    <dd>${cells[i]}<\/dd>\\n`;\r\n        }\r\n        delimitHtml += '  <\/div>\\n';\r\n      }\r\n    });\r\n\r\n    delimitHtml += '<\/dl><!-- \/\/\/.delimit -->';\r\n    return delimitHtml;\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3092 \u2192 <table>\u30bf\u30b0 \u306b\u5909\u63db\r\n  function convertTagTables(text) {\r\n    \/\/\u6539\u884c\u3067\u5206\u5272\r\n    const lines = text.split('\\n');\r\n\r\n    \/\/\u5404\u884c\u3092\u51e6\u7406\r\n    const processedLines = lines.map(line => {\r\n      line = line.trim();\r\n      if (line === '') return '';\r\n\r\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u59cb\u307e\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n      if (!line.startsWith('|')) {\r\n        line = '|' + line;\r\n      }\r\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u7d42\u308f\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\r\n      if (!line.endsWith('|')) {\r\n        line = line + '|';\r\n      }\r\n\r\n      return line;\r\n    }).filter(line => line !== ''); \/\/\u7a7a\u884c\u3092\u524a\u9664\r\n\r\n    if (processedLines.length === 0) return text;\r\n\r\n    \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u3092\u691c\u51fa\uff08|------|------|------:| \u306e\u3088\u3046\u306a\u884c\uff09\r\n    let separatorIndex = -1;\r\n    for (let i = 0; i < processedLines.length; i++) {\r\n      const cells = processedLines[i].split('|').filter(cell => cell !== '').map(cell => cell.trim());\r\n      \/\/ \u5168\u30bb\u30eb\u304c -\u3001:\u3001\u7a7a\u767d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308c\u3070\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\r\n      if (cells.length >= 2 && cells.every(cell => \/^[:\\-]+$\/.test(cell))) {\r\n        separatorIndex = i;\r\n        break;\r\n      }\r\n    }\r\n\r\n    \/\/\u30c6\u30fc\u30d6\u30eb\u306eHTML\u69cb\u7bc9\r\n    let tableHtml = '<table>\\n';\r\n    const hasThead = separatorIndex > 0;\r\n\r\n    \/\/ \u884c\u3092HTML\u306b\u5909\u63db\u3059\u308b\u30d8\u30eb\u30d1\u30fc\r\n    function rowToHtml(line) {\r\n      const cells = line.split('|')\r\n        .filter(cell => cell !== '')\r\n        .map(cell => cell.trim());\r\n\r\n      if (cells.length < 2) return '';\r\n\r\n      let html = '  <tr class=\"rung\">\\n';\r\n      html += `    <th>${cells[0]}<\/th>\\n`;\r\n      for (let i = 1; i < cells.length; i++) {\r\n        html += `    <td>${cells[i]}<\/td>\\n`;\r\n      }\r\n      html += '  <\/tr>\\n';\r\n      return html;\r\n    }\r\n\r\n    if (hasThead) {\r\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u524d\u3092 <thead> \u306b\r\n      tableHtml += '<thead>\\n';\r\n      for (let i = 0; i < separatorIndex; i++) {\r\n        tableHtml += rowToHtml(processedLines[i]);\r\n      }\r\n      tableHtml += '<\/thead>\\n';\r\n\r\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u5f8c\u3092 <tbody> \u306b\uff08\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u81ea\u4f53\u306f\u30b9\u30ad\u30c3\u30d7\uff09\r\n      tableHtml += '<tbody>\\n';\r\n      for (let i = separatorIndex + 1; i < processedLines.length; i++) {\r\n        tableHtml += rowToHtml(processedLines[i]);\r\n      }\r\n      tableHtml += '<\/tbody>\\n';\r\n    } else {\r\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u306a\u3057 \u2192 \u5f93\u6765\u901a\u308a\u5168\u884c\u3092 <tbody> \u306b\r\n      tableHtml += '<tbody>\\n';\r\n      processedLines.forEach(line => {\r\n        tableHtml += rowToHtml(line);\r\n      });\r\n      tableHtml += '<\/tbody>\\n';\r\n    }\r\n\r\n    tableHtml += '<\/table><!-- \/\/\/.table -->';\r\n    return tableHtml;\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \u533a\u5207\u308a\u6587\u5b57\u3092 | \u306b\u7f6e\u63db\r\n  \/\/ ============================================================\r\n  function replaceDelimiter(text, delimiter) {\r\n    if (!delimiter || delimiter === '|') return text;\r\n    \/\/ \u5404\u884c\u3054\u3068\u306b\u533a\u5207\u308a\u6587\u5b57\u3092 | \u306b\u7f6e\u63db\r\n    return text.split('\\n').map(function(line) {\r\n      return line.split(delimiter).join('|');\r\n    }).join('\\n');\r\n  }\r\n\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u524d\u51e6\u7406\uff08\u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u5185\u306e < ^ \u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\uff09\r\n  \/\/ HTML\u5909\u63db\u524d\u306b\u5b9f\u884c\u3057\u3066\u3001< \u304cHTML\u30bf\u30b0\u3068\u8aa4\u8a8d\u3055\u308c\u308b\u306e\u3092\u9632\u3050\r\n  \/\/ ============================================================\r\n  function preMergeCells(text) {\r\n    \/\/ \u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u306e\u307f\u5bfe\u8c61\uff08|\u3067\u59cb\u307e\u308b\u884c\uff09\r\n    return text.replace(\/^(\\|[^\\n]*\\|)$\/gm, function(line) {\r\n      \/\/ \u30bb\u30eb\u5185\u5bb9\u304c < \u306e\u307f\u306e\u5834\u5408\u306b\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\r\n      line = line.replace(\/\\|\\s*<\\s*(?=\\|)\/g, '| ___MERGE_LEFT___ ');\r\n      \/\/ \u30bb\u30eb\u5185\u5bb9\u304c > \u306e\u307f\u306e\u5834\u5408\u306b\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\r\n      line = line.replace(\/\\|\\s*>\\s*(?=\\|)\/g, '| ___MERGE_RIGHT___ ');\r\n      \/\/ \u30bb\u30eb\u5185\u5bb9\u304c ^ \u306e\u307f\u306e\u5834\u5408\u306b\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\r\n      line = line.replace(\/\\|\\s*\\^\\s*(?=\\|)\/g, '| ___MERGE_UP___ ');\r\n      return line;\r\n    });\r\n  }\r\n\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u5f8c\u51e6\u7406\uff08\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u691c\u51fa\u3057\u3066colspan\/rowspan\u3092\u9069\u7528\uff09\r\n  \/\/ HTML\u5909\u63db\u30fb\u6574\u5f62\u304c\u3059\u3079\u3066\u5b8c\u4e86\u3057\u305f\u5f8c\u306b\u5b9f\u884c\r\n  \/\/ ============================================================\r\n  function mergeCells(text) {\r\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u304c\u5b58\u5728\u3057\u306a\u3051\u308c\u3070\u30b9\u30ad\u30c3\u30d7\r\n    if (text.indexOf('___MERGE_') === -1) return text;\r\n\r\n    \/\/ \u5404\u30c6\u30fc\u30d6\u30eb\u30d6\u30ed\u30c3\u30af\u3092\u51e6\u7406\r\n    return text.replace(\/<table[^>]*>\\s*(?:<thead>[\\s\\S]*?<\\\/thead>\\s*)?<tbody>([\\s\\S]*?)<\\\/tbody>\\s*<\\\/table>(?:\\s*<!--[^>]*-->)?\/g, function(fullMatch, tbodyContent) {\r\n\r\n      \/\/ \u884c\u3092\u62bd\u51fa\r\n      const rowRegex = \/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g;\r\n      const rows = [];\r\n      let rowMatch;\r\n\r\n      while ((rowMatch = rowRegex.exec(tbodyContent)) !== null) {\r\n        const rowContent = rowMatch[1];\r\n        const cells = [];\r\n\r\n        \/\/ \u30bb\u30eb\u3092\u62bd\u51fa\uff08th\/td\u4e21\u5bfe\u5fdc\u3001\u5c5e\u6027\u4ed8\u304d\u3082\u5bfe\u5fdc\uff09\r\n        const cellRegex = \/<(th|td)([^>]*)>([\\s\\S]*?)<\\\/\\1>\/g;\r\n        let cellMatch;\r\n        while ((cellMatch = cellRegex.exec(rowContent)) !== null) {\r\n          cells.push({\r\n            tag: cellMatch[1],\r\n            attrs: cellMatch[2] || '',\r\n            content: cellMatch[3].trim(),\r\n            colspan: 1,\r\n            rowspan: 1,\r\n            merged: false\r\n          });\r\n        }\r\n\r\n        rows.push(cells);\r\n      }\r\n\r\n      if (rows.length === 0) return fullMatch;\r\n\r\n      \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u304c1\u3064\u3082\u306a\u3051\u308c\u3070\u3053\u306e\u30c6\u30fc\u30d6\u30eb\u306f\u30b9\u30ad\u30c3\u30d7\r\n      const hasPlaceholder = rows.some(row => row.some(cell =>\r\n        cell.content === '___MERGE_LEFT___' || cell.content === '___MERGE_RIGHT___' || cell.content === '___MERGE_UP___'\r\n      ));\r\n      if (!hasPlaceholder) return fullMatch;\r\n\r\n      \/\/ \u6a2a\u7d50\u5408\uff08\u5de6\u65b9\u5411\uff09: ___MERGE_LEFT___ \u306f\u5de6\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\r\n      for (let r = 0; r < rows.length; r++) {\r\n        for (let c = 1; c < rows[r].length; c++) {\r\n          if (rows[r][c].content === '___MERGE_LEFT___') {\r\n            let target = c - 1;\r\n            while (target >= 0 && rows[r][target].merged) { target--; }\r\n            if (target >= 0) {\r\n              rows[r][target].colspan++;\r\n              rows[r][c].merged = true;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      \/\/ \u6a2a\u7d50\u5408\uff08\u53f3\u65b9\u5411\uff09: ___MERGE_RIGHT___ \u306f\u53f3\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\r\n      for (let r = 0; r < rows.length; r++) {\r\n        for (let c = rows[r].length - 2; c >= 0; c--) {\r\n          if (rows[r][c].content === '___MERGE_RIGHT___') {\r\n            let target = c + 1;\r\n            while (target < rows[r].length && rows[r][target].merged) { target++; }\r\n            if (target < rows[r].length) {\r\n              rows[r][target].colspan++;\r\n              rows[r][c].merged = true;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      \/\/ \u7e26\u7d50\u5408: ___MERGE_UP___ \u306f\u4e0a\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\r\n      for (let r = 1; r < rows.length; r++) {\r\n        for (let c = 0; c < rows[r].length; c++) {\r\n          if (rows[r][c].content === '___MERGE_UP___') {\r\n            let target = r - 1;\r\n            while (target >= 0 && rows[target][c] && rows[target][c].merged) { target--; }\r\n            if (target >= 0 && rows[target][c]) {\r\n              rows[target][c].rowspan++;\r\n              rows[r][c].merged = true;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      \/\/ HTML\u518d\u69cb\u7bc9\r\n      let html = fullMatch.match(\/<table[^>]*>\/)[0] + '\\n';\r\n      \/\/ thead\u304c\u3042\u308c\u3070\u4fdd\u6301\r\n      const theadMatch = fullMatch.match(\/<thead>[\\s\\S]*?<\\\/thead>\/);\r\n      if (theadMatch) { html += theadMatch[0] + '\\n'; }\r\n\r\n      html += '<tbody>\\n';\r\n      for (let r = 0; r < rows.length; r++) {\r\n        const hasVisible = rows[r].some(c => !c.merged);\r\n        if (!hasVisible) continue;\r\n\r\n        html += '  <tr class=\"rung\">\\n';\r\n        for (let c = 0; c < rows[r].length; c++) {\r\n          if (rows[r][c].merged) continue;\r\n\r\n          const cell = rows[r][c];\r\n          let attrs = cell.attrs;\r\n          if (cell.colspan > 1) { attrs += ' colspan=\"' + cell.colspan + '\"'; }\r\n          if (cell.rowspan > 1) { attrs += ' rowspan=\"' + cell.rowspan + '\"'; }\r\n\r\n          html += '    <' + cell.tag + attrs + '>' + cell.content + '<\/' + cell.tag + '>\\n';\r\n        }\r\n        html += '  <\/tr>\\n';\r\n      }\r\n      html += '<\/tbody>\\n<\/table><!-- \/\/\/.table -->';\r\n\r\n      return html;\r\n    });\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/<table>\u5404\u884c\u6700\u521d\u306e\u30bb\u30eb\u3092 \u2192 <th> \u306b\u5909\u63db\r\n  function convertTagTd2Ths(text) {\r\n    try {\r\n      \/\/Step 1: \u4e00\u6642\u7684\u306a\u30de\u30fc\u30ab\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30fc\u30d6\u30eb\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4fdd\u8b77\r\n      text = text.replace(\/(<table[\\s\\S]*?<\\\/table>)\/g, (table) => {\r\n        \/\/\u307e\u305a\u5168\u3066\u306e\u30bb\u30eb\u3092<td>\u306b\u5909\u63db\uff08<thead>\u5185\u3082\u542b\u3080\uff09\r\n        let processedTable = table.replace(\/<th(\\s[^>]*)?>([\\s\\S]*?)<\\\/th>\/g, '<td$1>$2<\/td>');\r\n\r\n        \/\/\u5404\u884c\u306e\u6700\u521d\u306e\u30bb\u30eb\u3092<th>\u306b\u5909\u63db\r\n        processedTable = processedTable.replace(\/(<tr[^>]*>)\\s*<td(\\s[^>]*)?>([\\s\\S]*?)<\\\/td>\/g,\r\n          '$1<th$2>$3<\/th>');\r\n\r\n        \/\/marked.js\u3068\u540c\u3058\u5f62\u5f0f\u306b\u6574\u5f62\uff08\u30a4\u30f3\u30c7\u30f3\u30c8\u3068\u6539\u884c\u3092\u8abf\u6574\uff09\r\n        processedTable = beautifyTable(processedTable);\r\n\r\n        return processedTable;\r\n      });\r\n\r\n      return text;\r\n    } catch (error) {\r\n      console.error('\u30c6\u30fc\u30d6\u30eb\u5909\u63db\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u30c6\u30fc\u30d6\u30eb\u306e\u5909\u63db\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u30c6\u30fc\u30d6\u30ebHTML\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\r\n  function beautifyTable(html) {\r\n    \/\/\u4e0d\u8981\u306a\u7a7a\u767d\u3092\u524a\u9664\r\n    html = html.replace(\/>\\s+<\/g, '><').trim();\r\n\r\n    \/\/\u57fa\u672c\u7684\u306a\u30a4\u30f3\u30c7\u30f3\u30c8\u3068\u6539\u884c\u3092\u8a2d\u5b9a\r\n    html = html\r\n      \/\/<table> \u30bf\u30b0\u306e\u5f8c\u306b\u6539\u884c\u3092\u8ffd\u52a0\r\n      .replace(\/<table([^>]*)>\/g, '<table$1>\\n')\r\n\r\n      \/\/<thead> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\r\n      .replace(\/<thead>\/g, '<thead>\\n')\r\n      .replace(\/<\\\/thead>\/g, '\\n<\/thead>')\r\n\r\n      \/\/<tbody> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\r\n      .replace(\/<tbody>\/g, '<tbody>\\n')\r\n      .replace(\/<\\\/tbody>\/g, '\\n<\/tbody>')\r\n\r\n      \/\/<tr> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\r\n      .replace(\/<tr>\/g, '<tr>\\n')\r\n      .replace(\/<\\\/tr>\/g, '\\n<\/tr>')\r\n\r\n      \/\/<th> \u30bf\u30b0\u3068 <td> \u30bf\u30b0\u306e\u5f8c\u306b\u6539\u884c\u3092\u8ffd\u52a0\r\n      .replace(\/<th([^>]*)>\/g, '<th$1>')\r\n      .replace(\/<\\\/th>\/g, '<\/th>\\n')\r\n      .replace(\/<td([^>]*)>\/g, '<td$1>')\r\n      .replace(\/<\\\/td>\/g, '<\/td>\\n');\r\n\r\n    \/\/\u6700\u7d42\u7684\u306a\u6574\u5f62\uff08\u30a4\u30f3\u30c7\u30f3\u30c8\u306e\u8ffd\u52a0\uff09\r\n    const lines = html.split('\\n');\r\n    let indentLevel = 0;\r\n    let result = '';\r\n\r\n    for (let i = 0; i < lines.length; i++) {\r\n      const line = lines[i].trim();\r\n      if (!line) continue;\r\n\r\n      \/\/\u9589\u3058\u30bf\u30b0\u306e\u5834\u5408\u306f\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059\r\n      if (line.startsWith('<\/')) {\r\n        indentLevel = Math.max(0, indentLevel - 1);\r\n      }\r\n\r\n      \/\/\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u9069\u7528\r\n      result += ' '.repeat(indentLevel * 2) + line + '\\n';\r\n\r\n      \/\/\u958b\u59cb\u30bf\u30b0\u306e\u5834\u5408\u306f\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059\uff08\u9589\u3058\u30bf\u30b0\u3084\u81ea\u5df1\u9589\u3058\u30bf\u30b0\u306f\u9664\u304f\uff09\r\n      if (line.startsWith('<') && !line.startsWith('<\/') && !line.endsWith('\/>') && !line.startsWith('<th') && !line.startsWith('<td')) {\r\n        indentLevel++;\r\n      }\r\n    }\r\n\r\n    return result.trim();\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/<img \/>\u3092 \u2192 <picture> \u3067\u56f2\u3080\r\n  function encloseTagImgPictures(text) {\r\n    try {\r\n      \/\/\u3059\u3067\u306bpicture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u308bimg\u30bf\u30b0\u3092\u4e00\u6642\u7684\u306b\u30de\u30fc\u30af\r\n      let markedText = text;\r\n      let markerIndex = 0;\r\n      const markers = {};\r\n\r\n      \/\/picture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u308bimg\u30bf\u30b0\u3092\u4e00\u6642\u7684\u306b\u7f6e\u63db\r\n      markedText = markedText.replace(\/<picture[^>]*>[\\s\\S]*?<img[^>]*>[\\s\\S]*?<\\\/picture>\/gi, function (match) {\r\n        const marker = `___PICTURE_MARKER_${markerIndex}___`;\r\n        markers[marker] = match;\r\n        markerIndex++;\r\n        return marker;\r\n      });\r\n\r\n      \/\/picture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044img\u30bf\u30b0\u3092picture\u30bf\u30b0\u3067\u56f2\u3080\r\n      markedText = markedText.replace(\/<img([^>]*)>\/gi, function (match, attributes) {\r\n        \/\/\u81ea\u5df1\u9589\u3058\u30bf\u30b0\u306e\u5834\u5408\u306e\u51e6\u7406\r\n        if (attributes.endsWith('\/')) {\r\n          \/\/\u6700\u5f8c\u306e\/\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u51e6\u7406\r\n          const cleanAttrs = attributes.slice(0, -1).trim();\r\n          return `<picture><img${cleanAttrs ? ' ' + cleanAttrs : ''} \/><\/picture>`;\r\n        } else {\r\n          return `<picture><img${attributes}><\/picture>`;\r\n        }\r\n      });\r\n\r\n      \/\/\u30de\u30fc\u30ab\u30fc\u3092\u5143\u306epicture\u30bf\u30b0\u306b\u623b\u3059\r\n      Object.keys(markers).forEach(marker => {\r\n        markedText = markedText.replace(marker, markers[marker]);\r\n      });\r\n\r\n      return markedText;\r\n    } catch (error) {\r\n      console.error('img\u2192picture\u5909\u63db\u30a8\u30e9\u30fc:', error);\r\n      showMessage('img\u30bf\u30b0\u306epicture\u56f2\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/<p>\u5185\u306e\u6539\u884c\u3092 \u2192 <br \/> \u306b\u5909\u63db\r\n  function convertTagBreaks_inP(text) {\r\n    \/\/<p>\u30bf\u30b0\u5185\u306e\u6539\u884c\u3092\u691c\u51fa\u3057\u3066<br \/>\u30bf\u30b0\u306b\u7f6e\u63db\uff08<pre>\u30bf\u30b0\u306f\u9664\u5916\uff09\r\n    return text.replace(\/(<p(?:\\s[^>]*)?>)([\\s\\S]*?)(<\\\/p>)\/g, function (match, openTag, content, closeTag) {\r\n      \/\/\u30b3\u30f3\u30c6\u30f3\u30c4\u5185\u306e\u6539\u884c\u3092<br \/>\u306b\u5909\u63db\r\n      const convertedContent = content.replace(\/\\n\/g, '<br \/>\\n');\r\n      return openTag + convertedContent + closeTag;\r\n    });\r\n  }\r\n\r\n\r\n\r\n\r\n  function convertListStyles(text) {\r\n    \/\/list-style-type\u306e\u5909\u63db\r\n    const convertUList = document.getElementById('convertUListStyles').checked;\r\n    const convertOList = document.getElementById('convertOListStyles').checked;\r\n    const uListStyle = document.querySelector('#convertUListStyles + select').value;\r\n    const oListStyle = document.querySelector('#convertOListStyles + select').value;\r\n\r\n    if (convertUList) {\r\n      \/\/<ul>\u30bf\u30b0\u306e\u51e6\u7406\r\n      text = text.replace(\/<ul((?:[^>](?!style))*?)>\/gi, `<ul$1 style=\"list-style-type:${uListStyle};\">`);\r\n      text = text.replace(\/<ul([^>]*?)style=\"([^\"]*?)\"\/gi, function (match, p1, p2) {\r\n        if (p2.includes('list-style-type')) {\r\n          return `<ul${p1}style=\"${p2.replace(\/list-style-type:[^;]+;?\/, `list-style-type:${uListStyle};`)}\"`;\r\n        } else {\r\n          return `<ul${p1}style=\"${p2}list-style-type:${uListStyle};\"`;\r\n        }\r\n      });\r\n    }\r\n\r\n    if (convertOList) {\r\n      \/\/<ol>\u30bf\u30b0\u306e\u51e6\u7406\uff08<ul>\u3068\u540c\u69d8\uff09\r\n      text = text.replace(\/<ol((?:[^>](?!style))*?)>\/gi, `<ol$1 style=\"list-style-type:${oListStyle};\">`);\r\n      text = text.replace(\/<ol([^>]*?)style=\"([^\"]*?)\"\/gi, function (match, p1, p2) {\r\n        if (p2.includes('list-style-type')) {\r\n          return `<ol${p1}style=\"${p2.replace(\/list-style-type:[^;]+;?\/, `list-style-type:${oListStyle};`)}\"`;\r\n        } else {\r\n          return `<ol${p1}style=\"${p2}list-style-type:${oListStyle};\"`;\r\n        }\r\n      });\r\n    }\r\n\r\n    return text;\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u306b\u3001\u4efb\u610f\u306e\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\r\n  function processAllTagClasses(text) {\r\n    try {\r\n      \/\/\u51e6\u7406\u5bfe\u8c61\u306e\u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u8981\u7d20\u306e\u30bb\u30c3\u30c8\r\n      const inputSets = [\r\n        { tagId: 'targetAddClase1', classId: 'afterAddClase1', checkboxId: 'convertAddClase1s' },\r\n        { tagId: 'targetAddClase2', classId: 'afterAddClase2', checkboxId: 'convertAddClase2s' }\r\n      ];\r\n      \/\/\u5404\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c\r\n      for (const set of inputSets) {\r\n        \/\/\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u304c\u30c1\u30a7\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\r\n        if (document.getElementById(set.checkboxId).checked) {\r\n          const targetTag = document.getElementById(set.tagId).value.trim();\r\n          const addClass = document.getElementById(set.classId).value.trim();\r\n\r\n          \/\/\u7a7a\u306e\u5165\u529b\u30c1\u30a7\u30c3\u30af\r\n          if (!targetTag || !addClass) {\r\n            console.warn(`${set.tagId}\u307e\u305f\u306f${set.classId}\u304c\u7a7a\u3067\u3059`);\r\n            continue; \/\/\u3053\u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u6b21\u3078\r\n          }\r\n\r\n          \/\/\u6b63\u78ba\u306a\u30bf\u30b0\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u305f\u3081\u306e\u6539\u826f\u3055\u308c\u305f\u6b63\u898f\u8868\u73fe\r\n          \/\/\u30bf\u30b0\u306f<\u30bf\u30b0\u540d>\u307e\u305f\u306f<\u30bf\u30b0\u540d \u5c5e\u6027...>\u306e\u5f62\u5f0f\u306b\u30de\u30c3\u30c1\u3059\u308b\r\n          const regex = new RegExp(`<${targetTag}(>|\\\\s[^>]*>)`, 'g');\r\n\r\n          text = text.replace(regex, (match) => {\r\n            \/\/\u9589\u3058\u62ec\u5f27\u306e\u76f4\u524d\u306e\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u308b\r\n            const closeBracketPos = match.lastIndexOf('>');\r\n            const beforeCloseBracket = match.substring(0, closeBracketPos);\r\n\r\n            if (beforeCloseBracket.includes('class=\"')) {\r\n              \/\/\u65e2\u5b58\u306eclass\u5c5e\u6027\u304c\u3042\u308b\u5834\u5408\r\n              return match.replace(\/class=\"([^\"]*)\"\/, (m, existingClasses) => {\r\n                const classArray = existingClasses.split(' ');\r\n                if (!classArray.includes(addClass)) {\r\n                  return `class=\"${existingClasses} ${addClass}\"`;\r\n                }\r\n                return m;\r\n              });\r\n            } else {\r\n              \/\/class\u5c5e\u6027\u304c\u306a\u3044\u5834\u5408\u3001\u9589\u3058\u62ec\u5f27\u306e\u76f4\u524d\u306bclass\u5c5e\u6027\u3092\u8ffd\u52a0\r\n              return `${beforeCloseBracket} class=\"${addClass}\">`;\r\n            }\r\n          });\r\n        }\r\n      }\r\n\r\n      return text;\r\n    } catch (error) {\r\n      console.error('\u30af\u30e9\u30b9\u8ffd\u52a0\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u30af\u30e9\u30b9\u8ffd\u52a0\u51e6\u7406\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n\r\n  \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u3092 \u2192 \u4efb\u610f\u306e\u30bf\u30b0 \u306b\u5909\u63db\r\n  function processAllTagUpdates(text) {\r\n    try {\r\n      \/\/\u51e6\u7406\u5bfe\u8c61\u306e\u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u8981\u7d20\u306e\u30bb\u30c3\u30c8\r\n      const updateSets = [\r\n        { targetId: 'targetUpdateTag3', afterId: 'afterUpdateTag3', checkboxId: 'convertUpdateTag3s' },\r\n        { targetId: 'targetUpdateTag4', afterId: 'afterUpdateTag4', checkboxId: 'convertUpdateTag4s' },\r\n        { targetId: 'targetUpdateTag5', afterId: 'afterUpdateTag5', checkboxId: 'convertUpdateTag5s' },\r\n        { targetId: 'targetUpdateTag6', afterId: 'afterUpdateTag6', checkboxId: 'convertUpdateTag6s' }\r\n      ];\r\n\r\n      \/\/\u5404\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c\r\n      for (const set of updateSets) {\r\n        \/\/\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u304c\u30c1\u30a7\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\r\n        if (document.getElementById(set.checkboxId).checked) {\r\n          const targetTag = document.getElementById(set.targetId).value.trim();\r\n          const afterTag = document.getElementById(set.afterId).value.trim();\r\n\r\n          \/\/\u7a7a\u306e\u5165\u529b\u30c1\u30a7\u30c3\u30af\r\n          if (!targetTag || !afterTag) {\r\n            console.warn(`${set.targetId}\u307e\u305f\u306f${set.afterId}\u304c\u7a7a\u3067\u3059`);\r\n            continue; \/\/\u3053\u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u6b21\u3078\r\n          }\r\n\r\n          \/\/\u30bf\u30b0\u540d\u3068\u5c5e\u6027\u3092\u62bd\u51fa\r\n          const targetMatch = targetTag.match(\/^<([^\\s>]+)([^>]*)>\/);\r\n          const afterMatch = afterTag.match(\/^<([^\\s>]+)([^>]*)>\/);\r\n\r\n          if (!targetMatch || !afterMatch) {\r\n            console.warn(`${set.targetId}\u307e\u305f\u306f${set.afterId}\u306e\u30bf\u30b0\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093`);\r\n            continue;\r\n          }\r\n\r\n          const [fullTargetTag, targetTagName, targetAttrs] = targetMatch;\r\n          const [fullAfterTag, afterTagName, afterAttrs] = afterMatch;\r\n\r\n          \/\/\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3067\u30bf\u30b0\u3092\u30a8\u30b9\u30b1\u30fc\u30d7\r\n          const escapedTargetTag = escapeRegExp(fullTargetTag);\r\n\r\n          \/\/\u958b\u59cb\u30bf\u30b0\u3068\u7d42\u4e86\u30bf\u30b0\u306e\u7f6e\u63db\u3092\u76f4\u63a5\u884c\u3046\uff08\u30de\u30fc\u30ab\u30fc\u3092\u4f7f\u308f\u306a\u3044\uff09\r\n          const openRegex = new RegExp(escapedTargetTag, 'g');\r\n          const closeRegex = new RegExp(`<\/${targetTagName}>`, 'g');\r\n\r\n          \/\/\u958b\u59cb\u30bf\u30b0\u3092\u7f6e\u63db\r\n          text = text.replace(openRegex, fullAfterTag);\r\n\r\n          \/\/\u7d42\u4e86\u30bf\u30b0\u3092\u7f6e\u63db\r\n          text = text.replace(closeRegex, `<\/${afterTagName}>`);\r\n        }\r\n      }\r\n\r\n      return text;\r\n    } catch (error) {\r\n      console.error('\u30bf\u30b0\u66f4\u65b0\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u30bf\u30b0\u306e\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n  \/\/\u6b63\u898f\u8868\u73fe\u306e\u30a8\u30b9\u30b1\u30fc\u30d7\u7528\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\r\n  function escapeRegExp(string) {\r\n    return string.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u53f3\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2 \u2192 \u5de6\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3078\u306e\u5909\u63db\r\n  function decodeText() {\r\n    let encode_area = document.getElementById('encodeArea');\r\n    let decode_area = document.getElementById('decodeArea');\r\n    let text = decode_area.value;\r\n\r\n    if (document.getElementById('decodeTagTables').checked) { text = decodeTagTables(text); }\r\n    if (document.getElementById('decodeHtml2Md').checked) { text = decodeHtml2Md(text); }\r\n\r\n    encode_area.value = text;\r\n    copyToClipboard(text, true);   \/\/isDecode = true\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u30c6\u30fc\u30d6\u30eb\u30bf\u30b0\u3092 \u2192 |\uff08\u30d1\u30a4\u30d7\uff09 \u306b\u30c7\u30b3\u30fc\u30c9\r\n  function decodeTagTables(text) {\r\n    try {\r\n      \/\/\u30c6\u30fc\u30d6\u30eb\u5168\u4f53\u3092\u691c\u7d22\u3057\u3066\u51e6\u7406\r\n      return text.replace(\/<table[^>]*>([\\s\\S]*?)<\\\/table>\/g, function (tableMatch, tableContent) {\r\n        let pipeRows = '';\r\n\r\n        \/\/\u5404\u884c\uff08tr\uff09\u3092\u51e6\u7406\r\n        const rowMatches = tableContent.match(\/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g);\r\n\r\n        if (!rowMatches) return tableMatch; \/\/\u30c6\u30fc\u30d6\u30eb\u884c\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u5143\u306e\u307e\u307e\r\n\r\n        rowMatches.forEach(rowMatch => {\r\n          const rowContent = rowMatch.replace(\/<\\\/?tr[^>]*>\/g, ''); \/\/tr \u30bf\u30b0\u3092\u9664\u53bb\r\n          let pipeRow = '|';\r\n\r\n          \/\/\u30bb\u30eb\uff08th, td\uff09\u3092\u51e6\u7406\r\n          const cellMatches = rowContent.match(\/<(th|td)[^>]*>([\\s\\S]*?)<\\\/(th|td)>\/g);\r\n\r\n          if (cellMatches) {\r\n            cellMatches.forEach(cellMatch => {\r\n              \/\/\u30bb\u30eb\u306e\u5185\u5bb9\u3092\u62bd\u51fa\uff08HTML\u30bf\u30b0\u306f\u4fdd\u6301\uff09\r\n              const cellContent = cellMatch.replace(\/<\\\/(th|td)>$\/, '').replace(\/^<(th|td)[^>]*>\/, '');\r\n\r\n              \/\/\u30bb\u30eb\u5185\u5bb9\u3092\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\uff08\u524d\u5f8c\u306e\u7a7a\u767d\u3092\u524a\u9664\uff09\r\n              const cleanContent = cellContent.trim();\r\n\r\n              pipeRow += cleanContent + '|';\r\n            });\r\n          }\r\n\r\n          \/\/\u884c\u304c\u7a7a\u3067\u306a\u3044\u5834\u5408\u306e\u307f\u8ffd\u52a0\r\n          if (pipeRow.length > 1) {\r\n            pipeRows += pipeRow + '\\n';\r\n          }\r\n        });\r\n\r\n        \/\/\u6700\u5f8c\u306e\u6539\u884c\u3092\u524a\u9664\r\n        return pipeRows.replace(\/\\n$\/, '');\r\n      });\r\n    } catch (error) {\r\n      console.error('\u30c6\u30fc\u30d6\u30eb\u30c7\u30b3\u30fc\u30c9\u30a8\u30e9\u30fc:', error);\r\n      showMessage('\u30c6\u30fc\u30d6\u30eb\u306e\u30c7\u30b3\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\r\n      return text;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/HTML\u3092 \u2192 Markdown\u8a18\u6cd5 \u306b\u30c7\u30b3\u30fc\u30c9\r\n  function decodeHtml2Md(text) {\r\n    const turndownService = new TurndownService();\r\n    return turndownService.turndown(text);\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\r\n  function copyToClipboard(text, isDecode = false) {\r\n    navigator.clipboard.writeText(text).then(function () {\r\n      if (isDecode) {\r\n        \/\/\u53f3\u304b\u3089\u5de6\u3078\u306e\u5909\u63db\u6642\u306f\u5de6\u5074(decodedMessage)\u306b\u8868\u793a\r\n        showMessage(\"\u30c6\u30ad\u30b9\u30c8\u304c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3057\u305f\uff01\", true, 'decodedMessage');\r\n      } else {\r\n        \/\/\u5de6\u304b\u3089\u53f3\u3078\u306e\u5909\u63db\u6642\u306f\u53f3\u5074(encodedMessage)\u306b\u8868\u793a\r\n        showMessage(\"\u30c6\u30ad\u30b9\u30c8\u304c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3057\u305f\uff01\", true, 'encodedMessage');\r\n      }\r\n    }, function (err) {\r\n      if (isDecode) {\r\n        showMessage(\"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + err, false, 'decodedMessage');\r\n      } else {\r\n        showMessage(\"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + err, false, 'encodedMessage');\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\r\n  function showMessage(msg, isSuccess, messageAreaId) {\r\n    let messageArea = document.getElementById(messageAreaId);\r\n    const messageHTML = isSuccess ?\r\n      `<p class=\"alert is-ghosted is-primary mt-0.5r\">\r\n<i class=\"icon mas ma-check_circle c-primary mr-0.5r\"><\/i>\r\n<span>${msg}<\/span>\r\n<\/p>` :\r\n      `<p class=\"alert is-ghosted is-error mt-0.5r\">\r\n<i class=\"icon mas ma-error c-error mr-0.5r\"><\/i>\r\n<span>${msg}<\/span>\r\n<\/p>`;\r\n\r\n    messageArea.innerHTML = '';\r\n    messageArea.insertAdjacentHTML('beforeend', messageHTML);\r\n\r\n    setTimeout(() => {\r\n      messageArea.innerHTML = '';\r\n    }, 3000);\r\n  }\r\n\r\n\r\n\r\n\r\n  \/\/\u30da\u30fc\u30b8\u8aad\u307f\u8fbc\u307f\u6642\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u3080\r\n  window.addEventListener('load', function () {\r\n    const savedText = localStorage.getItem('encodedText');\r\n    if (savedText) {\r\n      document.getElementById('encodeArea').value = savedText;\r\n    }\r\n  });\r\n\r\n\r\n  \/\/\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5185\u5bb9\u304c\u5909\u66f4\u3055\u308c\u305f\u3089\u4fdd\u5b58\r\n  document.getElementById('encodeArea').addEventListener('input', function () {\r\n    localStorage.setItem('encodedText', this.value);\r\n  });\r\n<\/script>","protected":false},"excerpt":{"rendered":"\u30d1\u30a4\u30d7\u533a\u5207\u308a\u306e\u30c6\u30ad\u30b9\u30c8\u3092HTML\u306etable\u30bf\u30b0\u306b\u81ea\u52d5\u5909\u63db\u3002Markdown\u8a18\u6cd5\u304b\u3089WordPress\u6295\u7a3f\u7528HTML\u3001\u6280\u8853\u6587\u66f8\u4f5c\u6210\u3001CMS\u6295\u7a3f\u306b\u6700\u9069\u3002\u30af\u30e9\u30b9\u81ea\u52d5\u4ed8\u4e0e\u3067\u5b9f\u52d9\u5bfe\u5fdc\u3002","protected":false},"author":1,"featured_media":6967,"parent":173,"menu_order":7,"comment_status":"closed","ping_status":"closed","template":"templates\/page-converter.php","meta":{"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","_exclude_from_list_pages":"","footnotes":"","vk-ltc-link":"","vk-ltc-target":"0"},"categories":[21,11],"tags":[],"class_list":["post-6964","page","type-page","status-publish","has-post-thumbnail","category-tool","category-html-css"],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/6964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/comments?post=6964"}],"version-history":[{"count":5,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/6964\/revisions"}],"predecessor-version":[{"id":12773,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/6964\/revisions\/12773"}],"up":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/173"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media\/6967"}],"wp:attachment":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media?parent=6964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/categories?post=6964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/tags?post=6964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}