如何使用javascript复制到剪贴板,但也保留换行符('\ n')

时间:2015-11-30 08:05:26

标签: javascript jquery html django

在我的帮助应用程序中,我正在尝试在Ipython中进行原型工作并快速将其转换为脚本(当它工作时)。感谢Click button copy to clipboard using jQuery,我在此页面上有一个工作剪贴板功能:

http://jsfiddle.net/codyc54321/udxp4osm/1/

虽然它会复制到剪贴板,但它会像一个像

这样的漫无边际的字符串

match = re.match(in_rgx, string)match#<_sre.SRE_Match at 0x7f90674cf3d8>match.gromatch.group match.groupdict match.groups match.group()#'In [3]: '

而不是我在页面上看到的内容:

match = re.match(in_rgx, string)

match
#<_sre.SRE_Match at 0x7f90674cf3d8>

match.gro
match.group      match.groupdict  match.groups     

match.group()
#'In [3]: '

并且没有新行分隔。出于某种原因,我的小提琴实际上不是复制,但我的应用程序是,但是我使用django过滤器将我的换行符(\ n)转换为<br>标签:

<p id="clean-code">match = re.match(in_rgx, string)<br /><br />match<br />#&lt;_sre.SRE_Match at 0x7f90674cf3d8&gt;<br /><br />match.gro<br />match.group      match.groupdict  match.groups     <br /><br />match.group()<br />#&#39;In [3]: &#39;<br /></p>

当我点击“复制到剪贴板”时,获取该字符串,没有br标签或换行符。因此,如果我粘贴到atom,gedit,任何文本编辑器中,我会得到一条长行,这会使我的页面无用。我尝试在每一行之后放一个真正的'\ n',你可以想象只是添加了一个新行。我尝试了文字\ n文本,然后我得到:

match = re.match(in_rgx, string)\nmatch\n#<_sre.SRE_Match at 0x7f90674cf3d8>\nmatch.group()\n#'In [3]: '\n

作为一条线,这是有道理的。这是我当前的python与多余的\ n:

def clean_ipython_line(code_line):
    in_rgx      = r"^In \[\d+\][:] "
    out_rgx     = r"^Out\[\d+\][:] "
    in_match    = re.match(in_rgx, code_line)
    out_match   = re.match(out_rgx, code_line)
    if in_match:
        line = code_line.replace(in_match.group(), '') + '\\n'
        return line
    elif out_match:
        line = ('#' + code_line.replace(out_match.group(), '')) + '\\n'
        return line
    else:
        return code_line

def clean_ipython_block(unclean_code):
    unclean_lines = unclean_code.split('\r\n')
    cleaned_lines = []
    for dirty_line in unclean_lines:
        cleaned_lines.append(clean_ipython_line(dirty_line))
    clean_block = "\r\n".join(cleaned_lines)
    print(clean_block)
    return clean_block

是否有内置的javascript方式复制到剪贴板将这些br标签转换为真正的换行符,当我粘贴到编辑器中时会破坏这些行?谢谢

0 个答案:

没有答案