如何在 javascript imacros 中删除字符串的随机部分

How to remove random part of string in javascript imacros

我有一些字符串

"D:\trial\img-trendy-high-heel-oxford-shoes.jpg"

"D:\trial\img-cute-heels-street-style_01.jpg"

"D:\trial\img7d3c5673d97326f9517ad24ba99e76.jpg"

"D:\trial\img6003_P_1388122701631.jpg"

我想删除“D:\trial\img\”并且只想要“5-trendy-high-heel-oxford-shoes.jpg

但是正如您所看到的,所有字符串在子字符串 img 之后都有不同的编号。

请帮我解决 imacros javascript eval 功能的问题。

这是我的宏代码

SET !DATASOURCE D:\trial\ima_kuwot.csv
SET !DATASOURCE_COLUMNS 50
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}
SET !VAR1 {{!COL3}}
Add !EXTRACT "D:\trial\img-cute-heels-street-style_01.jpg"
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.split('img\')[2];")
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.replace(/[^0-9\.]+/g, "");") 
SET !VAR2 EVAL("var s=\"{{!VAR1}}\"; s.replace(/[]+/g,'.jpg')")
SET !VAR2 EVAL("'{{!VAR1}}'.split('D:"\trial\img\"')[0].trim();")
PROMPT {{!VAR1}}
TAG POS=1 TYPE=INPUT:SEARCH ATTR=ID:media-search-input CONTENT={{!VAR1}}

我试过上面的 eval 语句,但对我没有用。

我假设您是从网页中提取这些路径字符串。我不认为你将能够使用 iMacros EVAL 命令来解析文件名,因为在将提取的路径填充到构成 EVAL 命令的字符串中时,反斜杠字符被视为转义字符。

例如,假设您已经提取了其中一个路径并且它现在位于 !EXTRACT 变量中。尝试在 EVAL 命令中使用此变量,如下所示将不起作用:

SET fullPath EVAL("var path = '{{!EXTRACT}}'; path;")
PROMPT {{fullPath}}

fullPath 的值将不是预期的值,因为提取文本中的反斜杠字符被视为转义字符。

为了正确执行此操作,您需要使用 Javascript 脚本界面,假设您使用的是用于 Firefox 的 iMacros。在这种情况下,您将播放一个 Javascript (.js) 脚本,该脚本将播放一个用于提取路径的宏,然后提取的值将通过 iimGetExtract 调用返回到脚本代码,其中文件名可以使用正则表达式解析出来。

我创建了一个示例宏,它将提供的几个路径值输入到表单字段中,然后将它们提取出来,连同相应的 Javascript 以处理这些值。

ExtractFilePaths.iim:

URL GOTO=http://demo.imacros.net/Automate/TestForm1
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name CONTENT=D:\trial\img-trendy-high-heel-oxford-shoes.jpg
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name EXTRACT=TXT
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name CONTENT=D:\trial\img-cute-heels-street-style_01.jpg
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name EXTRACT=TXT

GetFileNames.js:

iimPlay("ExtractFilePaths");

var regex = /D:\trial\img\\d+\(.*)/i;
var noMatch = "Match not found";
var fileName;
var matches;

matches = regex.exec(iimGetExtract(1));
fileName = matches ? matches[1] : noMatch;
alert(fileName);

matches = regex.exec(iimGetExtract(2));
fileName = matches ? matches[1] : noMatch;
alert(fileName);

有关在 iMacros for Firefox 中使用 Javascript 脚本界面的更多信息,请参阅以下内容:

http://wiki.imacros.net/iMacros_for_Firefox#Javascript_Scripting_Interface

幸运的是,以下语法有效:

SET !EXTRACT D:\\trial\\img\\-trendy-high-heel-oxford-shoes.jpg
SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/[\d\w\-\.]+$/);")
PROMPT {{!VAR1}}

(至少在 'iMacros for Firefox' 和 'iMacros for Chrome'。)