我一直致力于我的Safari扩展程序,用于将内容保存到Instapaper,并且一直致力于增强我对书签的标题解析。例如,我最近保存的文章有一个如下所示的标记:
报告: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);
};
如果有人能给我一个适用于此的提示,那么你的帮助将非常赞赏!
答案 0 :(得分:4)
你的正则表达式格式错误。它应该是:
safari.application.activeBrowserWindow.activeTab.title.search(/\|/)
注意缺少报价;我在这里使用正则表达式文字。此外,正则表达式文字需要由/
绑定。
您可以使用以下正则表达式替换,而不是搜索然后替换:
str = str.replace(/\|.*$/, "");
这将删除|
字符后的所有内容(如果存在)。