【问题标题】:splitting a sentence and storing it in to array using javascript使用javascript拆分句子并将其存储到数组中
【发布时间】:2012-08-07 13:15:19
【问题描述】:

我正在尝试拆分一个长字符串,它是 html 标记和普通单词和符号的组合。

例如,考虑,

var k= '<html><div id="test">it is interesting, but I love you.</div></html>'

我正在尝试拆分此字符串并将其存储到数组中,例如

<html>
<div id="test">
it
is
interesting
,
but 
I 
love 
you
.
</div>
</html>

我知道如何分隔 html 标记和名称,但我在使用下划线、句号、逗号和分号等符号时遇到了问题。

我的代码是这样的

var k,a,rg=/(<.*?>)|(\S+?(?=[\s<]))/g;

k='<html><div id="test"> it is interesting</div></html>';
a=k.match(rg);
console.log(a); // ["<html>", "<div id="test">", "it", "is", "interesting", "</div>", "</html>"]

如何用正则表达式分隔符号??

【问题讨论】:

  • 出于什么目的要拆分该 html?也许简单地将其转换为 html,然后使用 DOM 方法来查找和更改您想要的元素会更容易?
  • 我将它用于逐字比较并更改 html 样式..
  • 我正在使用 innerhtml 进行输入,然后我想根据匹配的单词添加样式..
  • 附带说明,请注意使用正则表达式解析 HTML。处理 HTML 时有很多极端情况(即使它是您自己制作的)。例如,HTML 实体和 UTF 字符编码。检查此 SO 问题以获取示例:stackoverflow.com/questions/3035825/….
  • 你可以试试这个吗? var rg=/(&lt;.*?&gt;)|(\w+)|([\S+])/g;

标签: javascript regex


【解决方案1】:

您尝试过split() 命令吗?

【讨论】:

    【解决方案2】:

    有人问这个问题很有趣,这是我昨天写的一个小提琴,应该可以满足你的要求:

    function GetInnerTextAsArray(text) {
        var arr,
            tmp = document.createElement("DIV");
    
            tmp.innerHTML = text;
            text = tmp.textContext||tmp.innerText;
    
        arr = text.split(/[\s,;]);
        return arr;    
    }​
    

    【讨论】:

    • 这将在空格上拆分,这并不是 OP 真正要求的。
    • 如果只比较单词,是否一定需要逗号和句点?为什么不先剥离它们,然后通过这个函数运行该字符串?
    • 不,我只是在改变样式...其余的应该保持不变..所以我不会从原始内容中删除任何内容..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2014-11-17
    • 2018-10-06
    • 2015-02-05
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多