Buduję skrypt Apple, aby monitować i otrzymywać dane od użytkownika za pośrednictwem okna dialogowego. Domyślna odpowiedź okna dialogowego to „Wprowadź kod”. Wymagany wpis to 6-cyfrowy kod nadany każdemu użytkownikowi. Po otrzymaniu danych wejściowych (lub kodu) użytkownika, niektóre weryfikacje muszą zostać przeprowadzone, potwierdzając, że dane wejściowe użytkownika są dopuszczalne na podstawie następujących warunków:
Użytkownik nie może wprowadzać liter ani symboli.
Wejście musi być liczbą całkowitą (tylko liczby całkowite i liczba zera tak).
Kod (wejściowy) ma długość dokładnie (lub równą) 6 cyfr. Nie więcej lub nie mniej niż 6.
tło - kod użytkownika jest generowany ad-hoc z innej aplikacji i jest niepowtarzalny za każdym razem. Nie ma możliwości odwołania się do tego kodu.
Na przykład użytkownik wprowadza 123456 w oknie dialogowym. Używając Apple Script, jak mogę to napisać, upewniając się ponownie, że kod to wszystkie liczby i dokładnie 6 cyfr?
źródło
Odpowiedzi:
Rozwiązanie 1:
Rozwiązanie 2:
Rozwiązanie to jest wyjątkowo krótkie, ale traktuje problem tak, jak powinien być traktowany. Mylące jest twierdzenie, że chcesz „sprawdzaj dane wejściowe użytkownika jako liczbę całkowitą” , kiedy w rzeczywistości mamy do czynienia tylko z tekstem. Hasło jest 6-znakowym hasłem, a te znaki są ograniczone do wartości unicode reprezentujących cyfry; ale są to nadal znaki tekstowe, a nie liczby całkowite w dowolnym znaczeniu liczbowym.
znak komentarz przeciwko temu pytaniu faktycznie to stwierdzał, ale nawet ja wpadłem w myśl, że chcę ocenić dane wejściowe jako liczby, co jest częściowo tym, co
Solution 1
powyżej robi; i działa, i jest to doskonale dobre rozwiązanie, ale wykonuje niepotrzebne kroki, aby osiągnąć wynik końcowy.Traktowanie wkładu wyłącznie jako tekstu, problem zwięźle określony przez znak to jest „Sprawdź, czy łańcuch ma 6 znaków, a każdy z nich jest w zakresie 0–9”. To właśnie robi to rozwiązanie w jednej prostej linii:
Zmienna
validation
będzie zawierać 6-cyfrowy kod, jeśli jest ważny, lub"Invalid input"
Inaczej.źródło
źródło