这里是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的名称并排检查了实际的源字符串,因此它不是源字符串,而是方法本身。
值得注意的是,此错误每次都可以重现。
一个相当奇怪的行为。有什么想法吗?
答案 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