相关疑难解决方法(0)

从contentEditable div中提取文本

我有一个div设置contentEditable并用" white-space:pre" 设置样式,所以它保持像linebreaks的东西.在Safari,FF和IE中,div几乎看起来和工作原理相同.一切都很好.我想要做的是从这个div中提取文本,但是这样的方式不会丢失格式 - 特别是换行符.

我们使用的是jQuery,它的text()功能基本上是预先订购的DFS,并将DOM的那个分支中的所有内容粘合成一个整体.这会丢失格式.

我看了一下这个html()函数,但似乎所有三个浏览器都使用在我的contentEditablediv中幕后生成的实际HTML做了不同的事情.假设我在我的div中输入:

1
2
3
Run Code Online (Sandbox Code Playgroud)

这些是结果:

Safari 4:

1
<div>2</div>
<div>3</div>
Run Code Online (Sandbox Code Playgroud)

Firefox 3.6:

1
<br _moz_dirty="">
2
<br _moz_dirty="">
3
<br _moz_dirty="">
<br _moz_dirty="" type="_moz">
Run Code Online (Sandbox Code Playgroud)

IE 8:

<P>1</P><P>2</P><P>3</P>
Run Code Online (Sandbox Code Playgroud)

啊.这里没有什么非常一致的.令人惊讶的是,MSIE看起来最健康!(大写P标签和所有)

div将动态设置样式(字体,颜色,大小和对齐),这是使用CSS完成的,所以我不确定我是否可以使用pre标记(我在使用Google找到的某些页面上提到过).

有没有人知道任何JavaScript代码和/或jQuery插件或从contentEditable div中提取文本以保留换行符的方式?如果我不需要,我宁愿不重新发明解析轮.

更新:我getText从jQuery 1.4.2中抄袭了这个函数并对其进行了修改以提取它,其中大部分空格完整(我只添加了一行,我添加了换行符);

function extractTextWithWhitespace( elems ) {
    var ret = "", elem;

    for ( var i = 0; elems[i]; i++ ) {
        elem = elems[i];

        // Get the text …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery contenteditable

46
推荐指数
2
解决办法
2万
查看次数

替换字符之间的点

因此,当在点之前没有空格时,我想要在字符串中使用子点.我认为这可以通过正则表达式轻松完成,但我无法做到.

我有模式,我希望它们是:

  • h.e.ll.o w.o.r.l.d: hello world
  • h.e.ll.o w.o.r.l.d: hello world
  • hello. world: hello. world

我尝试了以下模式:

\w+(\.)+\w+
\w+(\.+\w+)
\w+\.+\w+
Run Code Online (Sandbox Code Playgroud)

我总是得到这样的东西: he.ll.o wo.rl.d

我使用python的re模块来匹配和替换以下代码:

>>> re.sub(r'\w+\.+\w+', lambda x: x.group(0).replace('.', ''), 'h.e.ll.o w.o.r.l.d')
'he.llo wo.rl.d'
Run Code Online (Sandbox Code Playgroud)

python regex

3
推荐指数
1
解决办法
71
查看次数

标签 统计

contenteditable ×1

css ×1

html ×1

javascript ×1

jquery ×1

python ×1

regex ×1