Ошибки при извлечении текста между двумя строками методом AppleScript - PullRequest
1 голос
/ 10 апреля 2019

Новичок в 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

Яиспользуя этот метод, чтобы извлечь имя и фамилию пользователя из строки html, полученной при запуске поиска идентификатора Javascript.Я сделаю

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

Это работает 90% времени, но в некоторых случаях, в зависимости от имени пользователя, с этим сообщением выдается ошибка

Невозможно преобразовать текстовые элементы от 2 до -1 из "(часть имени)" в текстовый тип.

Вот несколько примеров имен, которые нарушат этот метод

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

В дальнейшем тестировании я подтвердил, что любые имена, содержащие букву "X", не будут работать в этом методе.Я исследовал фактические исходные строки рядом с именами, содержащими X, и теми, которые не содержат, так что это не исходная строка, а сам метод.

Стоит отметить, что эта ошибка воспроизводимакаждый раз.

Довольно странное поведение.Есть идеи?

1 Ответ

0 голосов
/ 10 апреля 2019

изменение переменной 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...