Нужно собрать первую букву каждой строки в списке и собрать все вместе как новую строку - PullRequest
0 голосов
/ 02 июля 2019

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

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

set myList to "Apple Banana Orange Kiwi"

set wordsNumber to the number of words of myList


if wordsNumber = 1 then
    set firstcharacter to first character of first word of myList
    set secondcharacter to second character of first word of myList
    set thirdcharacter to last character of first word of myList


    set generatedCoCode to firstcharacter & secondcharacter & thirdcharacter

    set unmodifiedCoCode to generatedCoCode
    set upperCaseCoCode to do shell script "echo " & unmodifiedCoCode & " | tr [:lower:] [:upper:]"
else
    try
        if wordsNumber = 2 then
            set firstcharacter to first character of first word of myList
            set secondcharacter to second character of first word of myList
            set thirdcharacter to first character of second word of myList


            set generatedCoCode to firstcharacter & secondcharacter & thirdcharacter

            set unmodifiedCoCode to generatedCoCode
            set upperCaseCoCode to do shell script "echo " & unmodifiedCoCode & " | tr [:lower:] [:upper:]"

        else
            try
                if wordsNumber = 3 then
                    set firstcharacter to first character of first word of myList
                    set secondcharacter to first character of second word of myList
                    set thirdcharacter to first character of third word of myList


                    set generatedCoCode to firstcharacter & secondcharacter & thirdcharacter

                    set unmodifiedCoCode to generatedCoCode
                    set upperCaseCoCode to do shell script "echo " & unmodifiedCoCode & " | tr [:lower:] [:upper:]"

                else
                    try
                        if wordsNumber = 4 then
                            set firstcharacter to first character of first word of myList
                            set secondcharacter to first character of second word of myList
                            set thirdcharacter to first character of third word of myList
                            set fourthcharacter to first character of fourth word of myList

                            set generatedCoCode to firstcharacter & secondcharacter & thirdcharacter & fourthcharacter

                            set unmodifiedCoCode to generatedCoCode
                            set upperCaseCoCode to do shell script "echo " & unmodifiedCoCode & " | tr [:lower:] [:upper:]"

                        else
                            try
                                if wordsNumber = 5 then
                                    set firstcharacter to first character of first word of myList
                                    set secondcharacter to first character of second word of myList
                                    set thirdcharacter to first character of third word of myList
                                    set fourthcharacter to first character of fourth word of myList
                                    set fifthcharacter to first character of fifth word of myList

                                    set generatedCoCode to firstcharacter & secondcharacter & thirdcharacter & fourthcharacter & fifthcharacter

                                    set unmodifiedCoCode to generatedCoCode
                                    set upperCaseCoCode to do shell script "echo " & unmodifiedCoCode & " | tr [:lower:] [:upper:]"


                                end if
                            end try
                        end if
                    end try
                end if
            end try
        end if
    end try
end if

1 Ответ

0 голосов
/ 02 июля 2019

Вы можете уменьшить код до

set myList to "Apple Banana Orange Kiwi"
set wordsNumber to the number of words of myList

set generatedCoCod to ""
if wordsNumber = 1 then
    if length of myList = 3 then
        set generatedCoCod to reverse of characters of myList
    else
        tell myList to set generatedCoCod to text 1 thru 2 & text -1
    end if
else if wordsNumber = 2 then
    tell myList to set generatedCoCod to text 1 thru 2 of 1st word & text 1 of 2nd word
else
    repeat with aWord in words of myList
        set generatedCoCod to generatedCoCod & first character of aWord
    end repeat
end if
set upperCaseCoCode to do shell script "echo " & generatedCoCod & " | tr [:lower:] [:upper:]"

Для случаев wordsNumber >= 3 он использует цикл повторения для добавления первого символа каждого слова к generatedCoCod.Наконец, это делает заглавной строку.

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