0

我一直在开发用于将内容保存到Instapaper的 Safari 扩展程序,并且一直在努力增强我对书签的标题解析。例如,我最近保存的一篇文章的标签如下所示:

报告:Bing 用户受到恶意软件重定向的不成比例影响 | TechCrunch

我想在我的 Safari 扩展程序中使用 JavaScript 来删除管道字符之后的所有文本,这样我可以使最终的书签在保存到 Instapaper 后看起来更整洁。

我已经尝试使用如下代码块在几个类似的案例中成功解析标题:

if(safari.application.activeBrowserWindow.activeTab.title.search(' - ') != -1) {
            console.log(safari.application.activeBrowserWindow.activeTab.title);
            console.log(safari.application.activeBrowserWindow.activeTab.title.search(' - '));
            var parsedTitle = safari.application.activeBrowserWindow.activeTab.title.substring(0, safari.application.activeBrowserWindow.activeTab.title.search(' - '));
            console.log(parsedTitle);
};

一旦我尝试用管道字符做同样的事情,我就开始陷入循环;但是,由于 JavaScript 将其用作特殊字符。我已经尝试了几位代码来尝试解决这个问题。最近看起来像这样(尝试使用正则表达式并转义管道字符):

if(safari.application.activeBrowserWindow.activeTab.title.search('/\|') != -1) {
            console.log(safari.application.activeBrowserWindow.activeTab.title);
            console.log(safari.application.activeBrowserWindow.activeTab.title.search('/\|'));
            var parsedTitle = safari.application.activeBrowserWindow.activeTab.title.substring(0, safari.application.activeBrowserWindow.activeTab.title.search('/\|'));
            console.log(parsedTitle);
};

如果有人可以给我一个适用于此的提示,我们将不胜感激!

4

1 回答 1

4

您的正则表达式格式错误。它应该是:

safari.application.activeBrowserWindow.activeTab.title.search(/\|/)

注意缺少引号;我在这里使用正则表达式文字。此外,正则表达式文字需要由/.

您可以简单地使用以下正则表达式进行替换,而不是搜索然后替换:

str = str.replace(/\|.*$/, "");

|如果字符存在,这将删除字符之后的所有内容。

于 2012-10-05T20:59:28.983 回答