如何以支持剪贴板复制的方式在JavaScript字符串中插入制表符?
JavaScript替换空格为可复制制表符的正确方法
首先明确:"word word".replace(/\s/, "\t")其实已经生成了包含真实制表符的字符串——控制台显示的"word\tword"只是对不可见字符的转义标注,不是字符串的实际内容。你复制控制台返回值得到字面\t,是因为控制台输出的是字符串的源码格式,而非实际渲染的文本。
要得到能在不同应用间复制粘贴的制表符,试试这两种方法:
直接用
console.log输出:const tabbedStr = "word word".replace(/\s/, "\t"); console.log(tabbedStr);此时控制台会显示
word word(中间空白是真实制表符),直接复制这段输出就能拿到正确的制表符。若要通过代码直接复制到剪贴板:
const tabbedStr = "word word".replace(/\s/, "\t"); const tempDiv = document.createElement('div'); tempDiv.textContent = tabbedStr; document.body.appendChild(tempDiv); // 选中并复制内容 const selection = window.getSelection(); const range = document.createRange(); range.selectNodeContents(tempDiv); selection.removeAllRanges(); selection.addRange(range); document.execCommand('copy'); document.body.removeChild(tempDiv);执行这段代码后,剪贴板里就会是带真实制表符的内容。
再说说你之前尝试的问题:
- 用
/\t/作为替换值:replace的第二个参数只能是字符串或函数,正则会被转为字符串"/\t/",自然得不到正确结果。 - 用
"	"或"	":这是HTML实体,JavaScript字符串不会解析它,只会当作普通文本处理。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

