在两个字符串AppleScript方法之间提取文本的错误

时间:2019-04-09 22:57:19

标签: applescript

这里是AppleScript的新手,我已经从其他在线资源中学到了以下方法,该方法允许我提取可以定义的两个字符串之间的字符串,请参见代码:

to ExText(searchText, startText, endText)
    set spaceholder to "x"
    set searchText to ("x" & searchText)
    set AppleScript's text item delimiters to spaceholder
    set endItems to text item -1 of searchText
    set AppleScript's text item delimiters to endText
    set beginningToEnd to text item 1 of endItems
    set AppleScript's text item delimiters to startText
    set finalText to (text items 2 thru -1 of beginningToEnd) as text
    set AppleScript's text item delimiters to ""
    return finalText
end ExText

我正在使用此方法从通过运行Javascript ID搜索获得的html字符串中提取用户的名字和姓氏。我会

Set SourceString to "<span>firstname lastname</span>"
ExText(SourceString, "<span>", "</span>")

它在90%的时间内都有效,但是在某些情况下,根据用户名的不同,此消息会出错

  

不能将“((部分名称)”)的第2项到第-1项文本键入文本。

有些示例名称会破坏此方法

<span>Xu Chang</span>
<span>Maxim Smith</span>

在进一步的测试中,我确认任何包含字母“ X”的名称都将使该方法失败。我已经与包含X的名称和不包含X的名称并排检查了实际的源字符串,因此它不是源字符串,而是方法本身。

值得注意的是,此错误每次都可以重现。

一个相当奇怪的行为。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

spaceholder的变量从“ x”更改为“ xx”应该有效

to ExText(searchText, startText, endText)
    set spaceholder to "xx"
    set searchText to ("xx" & searchText)
    set AppleScript's text item delimiters to spaceholder
    set endItems to text item -1 of searchText
    set AppleScript's text item delimiters to endText
    set beginningToEnd to text item 1 of endItems
    set AppleScript's text item delimiters to startText
    set finalText to (text items 2 thru -1 of beginningToEnd) as text
    set AppleScript's text item delimiters to ""
    return finalText
end ExText