在 AppleScript 中重复提取两个字符串之间的文本
Extract Text Between Two Strings Repeatedly in AppleScript
我是这里的众多 AppleScript 初学者之一,现在凌晨 3 点在这里进行,我已经阅读了所有可能的阅读材料,但我仍然没有找到我的答案。希望高手指点一下。
我希望从 html 代码块中重复提取两个字符串之间的多个值。 (通过使用 javascript 从站点查找特定 id/class 获得的 html 字符串块)
经过几个小时的 searching/reading,我发现很多人都在使用 Applescript 的文本项定界符讨论这个问题。然而,到目前为止,他们都只做了一次。
我认为 repeat statement 可能是我的答案,但似乎并不适用于此。 (但很可能是因为我太菜鸟了)
到目前为止,这是最常用的方法
set AppleScript's text item delimiters to startText
set text1 to text item 1 of InputString
set AppleScript's text item delimiters to endText
set text2 to text item 2 of InputString
set AppleScript's text item delimiters to {""}
问题是,它只执行一次并且不关心输入字符串中是否有多个 start/end 字符串。
在这个 post 中,有人提供了一个简单的 shell 脚本,它实现了 OP 所要求的(并且是迄今为止最接近我想要做的) ).我希望我能接受它,但我不知道如何将 shell 脚本更改为新手。
非常感谢!
编辑:
应一位专家的要求,我添加了示例字符串和预期输出以证明我的目标。
<div class="table-1"><div class="row"><div class="table-3">Customer ID:</div><div class="table-5">1234567890</div></div><div id="title" class="row"><div class="table-3">Title:</div><div class="table-5"></div></div><div id="customer-name" class="row"><div class="table-3">Name:</div><div class="table-5"><span>FirstName LastName</span> </div></div><div id="primary-email" class="row"><div class="table-3">Primary Email:</div><div class="table-5">test_123@google.com</div></div><div id="customer-email" class="row"><div class="table-3">Account Email:</div><div class="table-5">test_abc@google.com</div></div></div>
目标是获取客户 ID、姓名和帐户电子邮件。
使用 wch1zpink 提供的方法,我能够擦除所有 html 字符串,但随后出现了一个更大的问题,因为现在我拥有我需要的所有值,作为一个无法分开的长字符串.我知道这不是一件容易的事,而且我可能根本没有朝着正确的方向前进。非常感谢您的帮助!
PS。
我想过让脚本找到出现在“>”和“<”之间的任何文本。如果 ">" 发生这种情况,则没有价值并继续前进。最后它应该给我我需要的值加上一些如 "Name:" 或 "Title:"。然后,如果输出可以作为列表逐项列出,我就可以通过编号获取项目。 Ofc,只是一个菜鸟谈话,我希望我知道如何。
编辑2:
我决定使用不同的方法分别提取每个值,而不是一次从一个长的不一致的字符串块中提取 3 个值,并暂时实现了我的目标。 wch1zpink 提供的擦除方法被证明非常有用。再次感谢大家的参与!
PSS。
我欢迎任何未来的额外 comments/feedback/suggestions! :D
此 AppleScript 代码适用于使用最新版本的 macOS Mojave 的我。
-- Define Source Text Here
set fullTextString to "<p>I thought repeat statement</p> <p>After hours of searching/reading</p>"
-- Define As Many Strings As You Want Removed Here
set removeFromFullTextString to {"<p>", "</p>"}
set cleanedText to stripOuterTextTID(fullTextString, removeFromFullTextString)
on stripOuterTextTID(fullTextString, removeFromFullTextString)
set originalText to fullTextString
set AppleScript's text item delimiters to removeFromFullTextString
set tempText to text items of originalText
set text item delimiters to ""
set cleanedText to tempText as text
end stripOuterTextTID
我是这里的众多 AppleScript 初学者之一,现在凌晨 3 点在这里进行,我已经阅读了所有可能的阅读材料,但我仍然没有找到我的答案。希望高手指点一下。
我希望从 html 代码块中重复提取两个字符串之间的多个值。 (通过使用 javascript 从站点查找特定 id/class 获得的 html 字符串块)
经过几个小时的 searching/reading,我发现很多人都在使用 Applescript 的文本项定界符讨论这个问题。然而,到目前为止,他们都只做了一次。
我认为 repeat statement 可能是我的答案,但似乎并不适用于此。 (但很可能是因为我太菜鸟了)
到目前为止,这是最常用的方法
set AppleScript's text item delimiters to startText
set text1 to text item 1 of InputString
set AppleScript's text item delimiters to endText
set text2 to text item 2 of InputString
set AppleScript's text item delimiters to {""}
问题是,它只执行一次并且不关心输入字符串中是否有多个 start/end 字符串。
在这个 post
非常感谢!
编辑: 应一位专家的要求,我添加了示例字符串和预期输出以证明我的目标。
<div class="table-1"><div class="row"><div class="table-3">Customer ID:</div><div class="table-5">1234567890</div></div><div id="title" class="row"><div class="table-3">Title:</div><div class="table-5"></div></div><div id="customer-name" class="row"><div class="table-3">Name:</div><div class="table-5"><span>FirstName LastName</span> </div></div><div id="primary-email" class="row"><div class="table-3">Primary Email:</div><div class="table-5">test_123@google.com</div></div><div id="customer-email" class="row"><div class="table-3">Account Email:</div><div class="table-5">test_abc@google.com</div></div></div>
目标是获取客户 ID、姓名和帐户电子邮件。
使用 wch1zpink 提供的方法,我能够擦除所有 html 字符串,但随后出现了一个更大的问题,因为现在我拥有我需要的所有值,作为一个无法分开的长字符串.我知道这不是一件容易的事,而且我可能根本没有朝着正确的方向前进。非常感谢您的帮助!
PS。 我想过让脚本找到出现在“>”和“<”之间的任何文本。如果 ">" 发生这种情况,则没有价值并继续前进。最后它应该给我我需要的值加上一些如 "Name:" 或 "Title:"。然后,如果输出可以作为列表逐项列出,我就可以通过编号获取项目。 Ofc,只是一个菜鸟谈话,我希望我知道如何。
编辑2: 我决定使用不同的方法分别提取每个值,而不是一次从一个长的不一致的字符串块中提取 3 个值,并暂时实现了我的目标。 wch1zpink 提供的擦除方法被证明非常有用。再次感谢大家的参与!
PSS。 我欢迎任何未来的额外 comments/feedback/suggestions! :D
此 AppleScript 代码适用于使用最新版本的 macOS Mojave 的我。
-- Define Source Text Here
set fullTextString to "<p>I thought repeat statement</p> <p>After hours of searching/reading</p>"
-- Define As Many Strings As You Want Removed Here
set removeFromFullTextString to {"<p>", "</p>"}
set cleanedText to stripOuterTextTID(fullTextString, removeFromFullTextString)
on stripOuterTextTID(fullTextString, removeFromFullTextString)
set originalText to fullTextString
set AppleScript's text item delimiters to removeFromFullTextString
set tempText to text items of originalText
set text item delimiters to ""
set cleanedText to tempText as text
end stripOuterTextTID