2017-03-07 2 views
0

Ich habe einige SaitenWie zufällig Teil der Zeichenfolge in JavaScript imacros entfernen

"D: \ Versuch \ img \ 2 \ 5-trendy-High-Heel-Oxford-shoes.jpg"

"D: \ Versuch \ img \ 3 \ 20-süß-Fersen-Straße-style_01.jpg"

"D: \ Versuch \ img \ 4 \ 637d3c5673d97326f9517ad24ba99e76.jpg"

„D: \ Probe \ img \ 5 \ 126003_P_1388122701631.jpg "

ich will „D:\trial\img\2\“ entfernen und will nur „5-trendy-high-heel-oxford-shoes.jpg

Aber wie Sie alle Zeichenfolge haben img unterschiedliche Anzahl nach Teilzeichenkette sehen.

Bitte helfen Sie mir, das für imacros Javascript Eval Feature zu beheben.

hier ist mein imacros Code

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\3\20-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\1\"')[0].trim();") 
PROMPT {{!VAR1}} 
TAG POS=1 TYPE=INPUT:SEARCH ATTR=ID:media-search-input CONTENT={{!VAR1}} 

Ich habe versucht, über eval-Anweisungen, aber nichts für mich arbeiten.

Antwort

0

Glücklicherweise ist die folgende Syntax funktioniert:

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

(Mindestens in 'iMacros für Firefox' und 'iMacros für Chrome'.)

+0

Vielen Dank, aber wie ich sehen kann, muss ich zusätzliche Backslashes hinzufügen – user3790363

0

Ich nehme an, dass Sie diese Pfadzeichenfolgen von einer Webseite extrahieren. Ich glaube nicht, dass Sie den iMacros EVAL-Befehl verwenden können, um die Dateinamen zu analysieren, da die Backslash-Zeichen als Escape-Zeichen behandelt werden, wenn der extrahierte Pfad in die Zeichenfolge des EVAL-Befehls eingefügt wird.

Angenommen, Sie haben bereits einen der Pfade extrahiert und befinden sich jetzt in der Variablen! EXTRACT. Der Versuch, diese Variable in dem EVAL-Befehl zu verwenden, wie es nicht funktioniert folgendermaßen:

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

Der Wert fullPath wird nicht sein, was da die Backslash-Zeichen in dem extrahierten Text erwartet wird als Escape-Zeichen behandelt werden.

Um dies richtig zu machen, müssen Sie die Javascript Scripting-Schnittstelle verwenden, vorausgesetzt, Sie verwenden iMacros für Firefox. In diesem Fall spielen Sie ein Javascript-Skript (.js), das dann ein Makro zum Extrahieren der Pfade abspielt, und dann werden die extrahierten Werte über den Aufruf von iimGetExtract an den Skriptcode zurückgegeben, wo die Dateinamen mithilfe von analysiert werden können ein regulärer Ausdruck.

Ich habe ein Beispielmakro erstellt, das einige der in einem Formularfeld angegebenen Pfadwerte eingibt und sie dann zusammen mit dem entsprechenden Javascript extrahiert, um die Werte zu verarbeiten.

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\2\5-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\3\20-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); 

Für weitere Informationen über die Javascript-Scripting-Schnittstelle in iMacros für Firefox finden Sie unter der folgenden:

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

+0

können wir var regex = /D:\\trial\\img\\\\\\(.*)/i verwenden; in Imacros .iim Schnittstelle mit Eval-Funktion? – user3790363

+0

Leider nicht, wie ich in meiner Antwort erklärte, der Grund, warum dies nicht mit EVAL in einem .iim-Makro funktioniert, ist, weil die umgekehrten Schrägstrich Zeichen \ in den extrahierten Pfadwerte als Escape-Zeichen durch den Befehl EVAL interpretiert werden. – iMacrosGuru

+0

Da ich die Antworten anderer nicht kommentieren kann, werde ich hier im Hinblick auf die gewählte Antwort kommentieren. Meine Antwort wurde speziell unter der Annahme erstellt, dass die Pfadwerte von einer Webseite extrahiert werden, da in der ursprünglichen Version der Frage die Quelle dieser Werte nicht explizit erwähnt wurde. Ich stehe hinter meiner Antwort für dieses Szenario. Die Antwort von Shugar ist sicherlich für Fälle geeignet, in denen der Benutzer direkten Einfluss auf den Wert der Pfade hat. – iMacrosGuru

Verwandte Themen