如何在 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'。)
我有一些字符串
"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'。)