{"id":4525,"date":"2025-05-25T09:06:46","date_gmt":"2025-05-25T09:06:46","guid":{"rendered":"https:\/\/ingenio.vip\/?post_type=tools-pages&#038;p=4525"},"modified":"2025-05-25T09:06:51","modified_gmt":"2025-05-25T09:06:51","slug":"word-combiner","status":"publish","type":"tools-pages","link":"https:\/\/ingenio.vip\/zh\/tools-pages\/word-combiner\/","title":{"rendered":"Word Combiner"},"content":{"rendered":"<div class=\"ingenio-tool word-combiner\" role=\"region\" aria-labelledby=\"word-combiner-title\">\r\n  <h2 id=\"word-combiner-title\">Word Combiner<\/h2>\r\n\r\n  <label for=\"words-input\"><strong>Enter words or phrases (separated by commas or new lines):<\/strong><\/label>\r\n  <textarea id=\"words-input\" rows=\"5\" placeholder=\"apple, banana, cherry or one per line\" aria-required=\"true\" style=\"resize: vertical;\"><\/textarea>\r\n\r\n  <label for=\"separator\"><strong>Choose a separator\/style:<\/strong><\/label>\r\n  <select id=\"separator\" aria-required=\"true\">\r\n    <option value=\"\">No space<\/option>\r\n    <option value=\" \">Space<\/option>\r\n    <option value=\"-\">Dash (-) \/ kebab-case<\/option>\r\n    <option value=\"_\">Underscore (_) \/ snake_case<\/option>\r\n    <option value=\", \">Comma + space<\/option>\r\n    <option value=\"camel\">camelCase<\/option>\r\n    <option value=\"pascal\">PascalCase<\/option>\r\n  <\/select>\r\n\r\n  <div class=\"buttons-row\">\r\n    <button id=\"clear-input\" type=\"button\" aria-label=\"Clear input\">Clear Input<\/button>\r\n    <button id=\"copy-result\" type=\"button\" aria-label=\"Copy combined words to clipboard\">Copy Result<\/button>\r\n  <\/div>\r\n\r\n  <div id=\"combined-result\" aria-live=\"polite\" role=\"region\" style=\"margin-top: 20px; font-weight: 600; font-size: 1.25rem; word-break: break-word; min-height: 2.5em; border: 1px solid #ccc; padding: 12px; border-radius: 6px; background: #fff;\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .ingenio-tool.word-combiner {\r\n    max-width: 1200px;\r\n    margin: 30px auto;\r\n    padding: 25px;\r\n    background: #fff9f0;\r\n    border-radius: 12px;\r\n    box-shadow: 0 6px 18px rgba(0,0,0,0.1);\r\n    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\r\n    color: #4a4a4a;\r\n  }\r\n\r\n  .ingenio-tool.word-combiner h2 {\r\n    text-align: center;\r\n    margin-bottom: 25px;\r\n    color: #ba4a00;\r\n  }\r\n\r\n  label {\r\n    font-weight: 600;\r\n    margin-bottom: 6px;\r\n    display: block;\r\n  }\r\n\r\n  textarea, select {\r\n    width: 100%;\r\n    padding: 10px;\r\n    font-size: 1rem;\r\n    border-radius: 6px;\r\n    border: 1.5px solid #ccc;\r\n    transition: border-color 0.3s;\r\n  }\r\n\r\n  textarea:focus, select:focus {\r\n    border-color: #ba4a00;\r\n    outline: none;\r\n  }\r\n\r\n  .buttons-row {\r\n    margin-top: 12px;\r\n    display: flex;\r\n    gap: 12px;\r\n  }\r\n\r\n  button {\r\n    flex: 1;\r\n    padding: 12px;\r\n    font-size: 1.05rem;\r\n    background-color: #ba4a00;\r\n    color: white;\r\n    border: none;\r\n    border-radius: 8px;\r\n    cursor: pointer;\r\n    transition: background-color 0.25s;\r\n  }\r\n\r\n  button:hover {\r\n    background-color: #8a3700;\r\n  }\r\n\r\n  button:disabled {\r\n    background-color: #d7bfa6;\r\n    cursor: not-allowed;\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  document.addEventListener(\"DOMContentLoaded\", () => {\r\n    const wordsInput = document.getElementById('words-input');\r\n    const separatorSelect = document.getElementById('separator');\r\n    const resultDiv = document.getElementById('combined-result');\r\n    const copyBtn = document.getElementById('copy-result');\r\n    const clearBtn = document.getElementById('clear-input');\r\n\r\n    \/\/ Helpers for case transformations\r\n    function toCamelCase(words) {\r\n      return words\r\n        .map((word, i) => {\r\n          word = word.toLowerCase();\r\n          if (i === 0) return word;\r\n          return word.charAt(0).toUpperCase() + word.slice(1);\r\n        })\r\n        .join('');\r\n    }\r\n\r\n    function toPascalCase(words) {\r\n      return words\r\n        .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n        .join('');\r\n    }\r\n\r\n    \/\/ Main combine function\r\n    function combineWords() {\r\n      let rawInput = wordsInput.value.trim();\r\n\r\n      if (!rawInput) {\r\n        resultDiv.textContent = \"\u26a0\ufe0f Please enter some words or phrases!\";\r\n        copyBtn.disabled = true;\r\n        return;\r\n      }\r\n\r\n      \/\/ Split by commas or new lines, remove empty items, trim spaces\r\n      let words = rawInput.split(\/[\\n,]+\/).map(w => w.trim()).filter(Boolean);\r\n\r\n      if (words.length === 0) {\r\n        resultDiv.textContent = \"\u26a0\ufe0f Please enter some valid words!\";\r\n        copyBtn.disabled = true;\r\n        return;\r\n      }\r\n\r\n      const separator = separatorSelect.value;\r\n\r\n      let combined = '';\r\n\r\n      switch(separator) {\r\n        case 'camel':\r\n          combined = toCamelCase(words);\r\n          break;\r\n        case 'pascal':\r\n          combined = toPascalCase(words);\r\n          break;\r\n        default:\r\n          combined = words.join(separator);\r\n      }\r\n\r\n      resultDiv.textContent = combined;\r\n      copyBtn.disabled = combined.length === 0;\r\n    }\r\n\r\n    \/\/ Live update on input or separator change\r\n    wordsInput.addEventListener('input', combineWords);\r\n    separatorSelect.addEventListener('change', combineWords);\r\n\r\n    \/\/ Copy to clipboard with feedback\r\n    copyBtn.addEventListener('click', () => {\r\n      const text = resultDiv.textContent;\r\n      if (!text || text.startsWith('\u26a0\ufe0f')) return;\r\n\r\n      navigator.clipboard.writeText(text).then(() => {\r\n        copyBtn.textContent = \"Copied!\";\r\n        setTimeout(() => {\r\n          copyBtn.textContent = \"Copy Result\";\r\n        }, 1500);\r\n      }).catch(() => {\r\n        alert('Failed to copy. Please copy manually.');\r\n      });\r\n    });\r\n\r\n    \/\/ Clear input and result\r\n    clearBtn.addEventListener('click', () => {\r\n      wordsInput.value = '';\r\n      resultDiv.textContent = '';\r\n      copyBtn.disabled = true;\r\n      wordsInput.focus();\r\n    });\r\n\r\n    \/\/ Initialize\r\n    copyBtn.disabled = true;\r\n  });\r\n<\/script>\r\n\n\n\n\n<p><a href=\"https:\/\/ingenio.vip\/wp-admin\/admin.php?page=ingenio-tools-word-combiner-improved\"><\/a><\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Word Combiner Enter words or phrases (separated by commas or new lines): Choose a separator\/style: No space Space Dash (-) \/ kebab-case Underscore (_) \/ snake_case Comma + space camelCase PascalCase Clear Input Copy Result<\/p>\n<\/p><div class=\"more-link\"><a href=\"https:\/\/ingenio.vip\/zh\/tools-pages\/word-combiner\/\" class=\"btn btn-small btn--dark btn-hover-shadow\"><span class=\"text\">Continue Reading<\/span><i class=\"seoicon-right-arrow\"><\/i><\/a><\/div>","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"elementor_header_footer","meta":{"_acf_changed":false,"googlesitekit_rrm_CAowrpbbCw:productID":"","footnotes":""},"tools-categories":[],"class_list":["post-4525","tools-pages","type-tools-pages","status-publish","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/tools-pages\/4525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/tools-pages"}],"about":[{"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/types\/tools-pages"}],"author":[{"embeddable":true,"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":1,"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/tools-pages\/4525\/revisions"}],"predecessor-version":[{"id":4526,"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/tools-pages\/4525\/revisions\/4526"}],"wp:attachment":[{"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/media?parent=4525"}],"wp:term":[{"taxonomy":"tools-categories","embeddable":true,"href":"https:\/\/ingenio.vip\/zh\/wp-json\/wp\/v2\/tools-categories?post=4525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}