2012-09-05 59 views
0

只是一個簡單的問題:以下AppleScript代碼有什麼問題?它應該做的是在字符串中獲取文本項的位置(用用戶提供的分隔符分隔)。但到目前爲止,它不起作用。腳本調試器只是說,「無法繼續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