2012-09-05 4 views
0

간단한 질문 : 다음 AppleScript 코드의 문제점은 무엇입니까? 그것이 해야하는 일은 문자열 내에서 텍스트 항목 (사용자가 제공 한 구분 기호로 구분)의 위치를 ​​얻는 것입니다. 그러나 지금까지는 작동하지 않습니다. Script Debugger는 특정 오류없이 "return_string_position을 계속할 수 없습니다"라고 간단히 말합니다. 무엇이 잘못 되었습니까?왜이 짧은 코드가 작동하지 않습니까?

tell application "System Events" 
    set the_text to "The quick brown fox jumps over the lazy dog" 
    set word_index to return_string_position("jumps", the_text, " ") 
end tell 

on return_string_position(this_item, this_str, delims) 
    set old_delims to AppleScript's text item delimiters 
    set AppleScript's text item delimiters to delim 
    set this_list to this_str as list 
    repeat with i from 1 to the count of this_list 
     if item i of this_list is equal to this_item then return i 
    end repeat 
    set AppleScript's text item delimiters to old_delims 
end return_string_position 

답변

0

tell system events 명령이 올바르지 않아 제외해야합니다. 또한 ""의 텍스트 항목 구분 기호를 사용하여 단어 목록을 작성하지 않고 "모든 단어"를 사용할 수 있습니다. 마지막으로 전달 된 매개 변수의 마지막 일치 항목 만 반환하므로 각 일치 항목이 반환됩니다.

on return_string_position(this_item, this_str) 
    set theWords to every word of this_str 
    set matchedWords to {} 
    repeat with i from 1 to count of theWords 
     set aWord to item i of theWords 
     if item i of theWords = this_item then set end of matchedWords to i 
    end repeat 
    return matchedWords 
end return_string_position 

return_string_position("very", "The coffee was very very very very very ... very hot.") 
0

귀하의 문제는 시스템 이벤트는 return_string_position는 자신의 한 (당신이 사전에 살펴 보겠습니다 경우, 당신이 아니라는 것을 찾을 수 있습니다)입니다 기능을 생각한다는 것입니다. 이것은 매우 쉽게 해결됩니다. return_string_position으로 전화하기 전에 my을 추가하기 만하면됩니다.

새 코드 :

tell application "System Events" 
    set the_text to "The quick brown fox jumps over the lazy dog" 
    set word_index to my return_string_position("jumps", the_text, " ") 
end tell 
... 

아니면 adayzdone의 솔루션을 사용할 수 있습니다. 이 경우 간단한 텍스트로 작업 할 때 시스템 이벤트를 대상으로 할 필요가 없으므로 솔루션이 작업에 적합합니다.

+0

고마워요! 그것은 매력처럼 작동했습니다! –

+0

동의하려면 내 대답 옆에있는 체크 표시를 클릭하십시오. – fireshadow52

관련 문제