0

我正在尝试从抓取的站点中删除一些文本,但不确定可以使用哪些函数或库来简化此操作:

我从 PhantomJS 运行的代码示例:

var latest_release = page.evaluate(function () {
                // everything inside this function is executed inside our
                // headless browser, not PhantomJS.
                var links = $('[class="interesting"]');
                var releases = {};
                for (var i=0; i<links.length; i++) {
                    releases[links[i].innerHTML] = links[i].getAttribute("href");
                }

                // its important to take note that page.evaluate needs
                // to return simple object, meaning DOM elements won't work.
                return JSON.stringify(releases);
            }); 

interesting有我需要的东西,周围是新的行和标签等等。

这里是:

{"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null,"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null,"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null}

我试过string.slice("\n");了,什么也没发生,我真的想要一种有效的方法来剪掉这样的字符串,基于它与那些\n''s 和\t's 的关系

顺便说一句,这是我的拆分代码:

var x = latest_release.split('\n');

干杯。

4

4 回答 4

3

这是一个去除所有空白的简单案例。正则表达式做得很好的工作。

var s = "  \n\t\t\t\n\t\t\t\tI Am Interesting\n\t\t \t \n\t\t";
s = s.replace(/[\r\t\n]+/g, ''); // remove all non space whitespace
s = s.replace(/^\s+/, ''); // remove all space from the front
s = s.replace(/\s+$/, ''); // remove all space at the end :)
console.log(s);

进一步阅读:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

于 2012-07-03T08:29:15.380 回答
2
    var interesting = {
        "\n\t\t\t\n\t\t\t\tI_Am_Interesting1\n\t\t\t\n\t\t":null,
        "\n\t\t\t\n\t\t\t\tI_Am_Interesting2\n\t\t\t\n\t\t":null,
        "\n\t\t\t\n\t\t\t\tI_Am_Interesting3\n\t\t\t\n\t\t":null
    }

    found = new Array();
    for(x in interesting) {
        found[found.length] = x.match(/\w+/g);
    }
    alert(found);
于 2012-07-03T08:17:53.710 回答
1

您可以尝试使用“\\n”作为模式吗?您的 \n 可能被理解为纯字符串而不是特殊字符

于 2012-07-03T08:04:33.947 回答
0
new_string = string.replace("\n", "").replace("\t", "");
于 2012-07-03T08:10:15.363 回答