Pergunta

In imacros, I need to split a piece of text from the clipboard into 2 parts and then use the second part. This is what I have already:

SET !VAR1 EVAL("var s=\"{{!CLIPBOARD}}\"; s.split(\"(B)\",1); var r = s[1];r ")
PROMPT {{!VAR1}}

If I insert: "Abcde (B) FGHIJ" what I would expect is a prompt with "FGHIJ" as the second item in the array but what I get is "b" as the second letter.

How do I get the second item?

If you need it, here's the whole macro:

VERSION BUILD=8810214 RECORDER=FX
TAB T=1
TAG POS=1 TYPE=A ATTR=TXT:Neue<SP>Frage...<SP>
PROMPT "Kopiere die neue Frage!"
SET !VAR1 EVAL("var s=\"{{!CLIPBOARD}}\"; s.split(\"(B)\",1); var r = s[1];r ")
PROMPT {{!VAR1}}
TAG POS={{!LOOP}} TYPE=TEXTAREA ATTR=ID:question CONTENT={{!VAR1}}
TAG POS={{!LOOP}} TYPE=INPUT:TEXT ATTR=ID:answer1 CONTENT={{!VAR1}}
TAG POS={{!LOOP}} TYPE=INPUT:TEXT ATTR=ID:answer2 CONTENT=test
TAG POS={{!LOOP}} TYPE=INPUT:TEXT ATTR=ID:answer3 CONTENT=test   
TAG POS={{!LOOP}} TYPE=INPUT:TEXT ATTR=ID:answer4 CONTENT=dd
TAG POS={{!LOOP}} TYPE=INPUT:TEXT ATTR=ID:answer5 CONTENT=dd
Foi útil?

Solução

Change the SET line to:

SET !VAR1 EVAL("var s=\"{{!CLIPBOARD}}\"; s = s.split(\"(B)\"); var r = s[1];r ")

split doesn't modify the string it is called from. Also, I removed the limit of 1 you passed in to the split method, because that will make it only return the first index of the resulting array created by the split. In your example, it would return [Abcde ], instead of [Abcde , FGHIJ]

Check out info about the split method: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top