Как создать AppleScript для циклического прохождения документа BBEdit и перемещения «-» из конца числа в начало? - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть грязный файл отчета, который содержит неправильно отформатированные отрицательные числа.Конечная цель - импортировать их в Excel для анализа.Я использую BBEdit для очистки отчета перед импортом в Excel.Я хотел бы создать сценарий Apple для циклического прохождения отчета и перемещения знака «-» от задней части числа к передней.

Пример грязного отчета Строки:

B-EXCAL 02 3684        2.0000-      49.02-       108.00-        58.98-  54.6-
B-MISMH 09-3300       33.0000      722.91       1353.00        630.09   46.6 

Желаемыйвывод:

B-EXCAL 02 3684       -2.0000      -49.02       -108.00        -58.98  -54.6
B-MISMH 09-3300       33.0000      722.91       1353.00        630.09   46.6 

У меня есть опыт работы с JavaScript и VBScript, поэтому я представляю сценарий, работающий примерно так: псевдо-скрипт:

Get contents of current window from BBEdit
   for each word in contents
       if char(len(word)) = "-"
           newWord = "-" + rightTrim(word, 1) 
           replace(word, newWord)
       end if
   end for
end

Это мой первый опыт работы с AppleScript, и яполная потеря.

Спасибо за помощь /

Ответы [ 2 ]

1 голос
/ 06 января 2012

Я не уверен, что вам нужен AppleScript.Будет ли работать окно поиска / замены BBEdit для этого?Попробуйте следующее:

Find: ([0-9\.]+)\-<br />
Replace: \-\1

«Текст» и «Обтекание» должны быть единственными, выбранными ниже текстовой области «Заменить».Затем нажмите «Заменить все».

Если вам нужно сделать это сразу для нескольких отчетов, используйте те же шаблоны поиска / замены с многофайловым поиском.Если я не правильно понимаю ваш вопрос, дайте мне знать, но я думаю, что вы можете сделать это без AppleScript.

0 голосов
/ 23 сентября 2011

Попробуй это.Я предполагаю, что вы можете получить текст из bbedit (или где-либо еще) в applecript как переменную "originalText".Тогда вам придется положить «fixedText» обратно туда, где он принадлежит.ПРИМЕЧАНИЕ: в моем коде я предполагаю, что символ табуляции разделяет слова / столбцы в каждой строке исходного текста, как это сделал Майкл Дж. Барбер в данный момент.Если это другой символ (например, пробел), вам придется изменить слово tab в коде на пробел .

set originalText to "B-EXCAL 02 3684    2.0000- 49.02-  108.00- 58.98-  54.6-
B-MISMH 09-3300 33.0000 722.91  1353.00 630.09  46.6"
set fixedText to fixNegativeSigns(originalText)

on fixNegativeSigns(theText)
    set listText to paragraphs of theText
    set fixedText to ""

    set {tids, text item delimiters} to {text item delimiters, tab}
    repeat with i from 1 to count of listText
        set listItems to {}
        set thisList to text items of (item i of listText)
        repeat with j from 1 to count of thisList
            set thisItem to item j of thisList
            if text -1 of thisItem is "-" then
                set thisItem to "-" & text 1 thru -2 of thisItem
            end if
            set end of listItems to thisItem
        end repeat
        set fixedText to fixedText & (listItems as text) & character id 10
    end repeat
    set text item delimiters to tids
    return text 1 thru -2 of fixedText
end fixNegativeSigns

ПРИМЕЧАНИЕ: при тестировании моего кода выше вы должны скопировать / вставить его в редактор Applescript.Вам придется исправить символы табуляции в originalText , потому что они не сохраняются при копировании / вставке.Поэтому удалите пробелы между словами / столбцами и вставьте вкладку.Тогда код будет работать правильно.

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