Applescript: разграничение текста в цикле - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь получить значения из файла журнала всех вхождений значения. Записано по следующему ключу:

> <key>MyTime</key>         <string>2019-03-29T08:48:18+0000</string>
>       <key>serviceToken</key>

Я могу получить первое вхождение значения, которое я хочу, с помощью следующегокод, но как я могу найти больше вхождений и добавить во вторичную переменную?

##Getting the file name
set ShortDate to short date string of (current date)
set [dayN, MonthN, YearN] to the words of ShortDate
set myUSDate to YearN & MonthN & dayN as string
set myFileName to "TIME" & myUSDate & ".log"

set p to "/Users/kevin/Library/Logs/MyAPP/" & myFileName
set plistfile_path to POSIX file p

property leftEdge1 : "<key>myValueTime</key>"
property rightEdge1 : "<key>serviceToken</key>"
set myNewCaseNote to ""
set newFile to (plistfile_path as text)
set theSource to read file newFile as text
set theText to Unicode text
try
    set saveTID to text item delimiters
    set text item delimiters to leftEdge1
    set classValue to text item 2 of theSource
    set text item delimiters to rightEdge1
    set myCaseNote to text item 1 of classValue
    set text item delimiters to saveTID
    myCaseNote
end try

Но как я могу получить другое вхождение этого времени / данных?И не только первый

1 Ответ

1 голос
/ 29 марта 2019

это должно дать вам направление.Это не проверено (я на мобильном телефоне), но должно работать, если нет опечаток.

property leftEdge1 : "<key>myValueTime</key>"
property rightEdge1 : "<key>serviceToken</key>"


--Getting the file name
set ShortDate to short date string of (current date)
set [dayN, MonthN, YearN] to the words of ShortDate
set myUSDate to YearN & MonthN & dayN as string
set myFileName to "TIME" & myUSDate & ".log"

-- Read file
set p to "/Users/kevin/Library/Logs/MyAPP/" & myFileName
set plistfile_path to POSIX file p      
set newFile to (plistfile_path as text)
set theSource to read file newFile as text

-- Save text item delimiter
set saveTID to text item delimiters

-- First get all elements that start with leftEdge1
set text item delimiters to leftEdge1
set allContent to every text item of theSource
set text item delimiters to rightEdge1

set classValues to {}

-- Loop through text items and find content up to rightEdge1
repeat with singleContent in allContent
    set end of classValues to ((text item 1 of singleContent) as text)
end repeat

-- Restore text item delimiters
set text item delimiters to saveTID

classValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...