2 votes

AppleScript - comment compter la longueur d'un nombre entier ?

J'ai donc créé un programme qui écrit tous les nombres entre 0 et 9999, mais j'ai besoin qu'il fasse 4 caractères, quel que soit le nombre de chiffres - la seule façon de le faire, je pense, est de demander au programme de compter les chiffres puis de le mettre dans une variable, de soustraire cette variable de 4 et d'ajouter ce nombre de zéros avant le nombre lui-même.

Comment AppleScript peut-il compter les chiffres ? Y a-t-il même un moyen de le faire ?

5voto

klanomath Points 63400

Apple Developer > Guide de script d'automatisation Mac contient une exemple comment ajouter des zéros à un nombre en AppleScript et en JavaScript :

Ajout de zéros non significatifs à un nombre

Les gestionnaires du Listing 20-11 et du Listing 20-12 convertissent un nombre en une chaîne de caractères et la précèdent de zéros en tête jusqu'à ce qu'elle atteigne une certaine longueur. Ils acceptent deux paramètres : le nombre auquel il faut ajouter des zéros non significatifs et le nombre maximal de zéros non significatifs à ajouter. Par exemple, si le nombre maximal de zéros non significatifs est fixé à 2, les résultats vont de 001 à 999. Si le nombre maximal de zéros non significatifs est de 3, les résultats vont de 0001 à 9999, et ainsi de suite.

Liste AppleScript :

on addLeadingZerosToNumber(theNumber, theMaxLeadingZeroCount)
    -- Determine if the number is negative
    set isNegative to theNumber is less than 0

    -- Determine when the maximum number of digits will be reached
    set theThreshold to (10 ^ theMaxLeadingZeroCount) as integer

    -- If the number is shorter than the maximum number of digits
    if theNumber is less than theThreshold then
        -- If the number is negative, convert it to positive
        if isNegative = true then set theNumber to -theNumber

        -- Add the zeros to the number
        set theLeadingZeros to ""
        set theDigitCount to length of ((theNumber div 1) as string)
        set theCharacterCount to (theMaxLeadingZeroCount + 1) - theDigitCount
        repeat theCharacterCount times
            set theLeadingZeros to (theLeadingZeros & "0") as string
        end repeat

        -- Make the number negative, if it was previously negative
        if isNegative = true then set theLeadingZeros to "-" & theLeadingZeros

        -- Return the prefixed number
        return (theLeadingZeros & (theNumber as text)) as string

      -- If the number is greater than or equal to the maximum number of digits
    else
        -- Return the original number
        return theNumber as text
    end if
end addLeadingZerosToNumber

Si vous préférez JavaScript, consultez le lien.

1 votes

J'aime le fait que cette réponse fonctionne pour n'importe quel nombre de zéros, par opposition à une simple instruction if/else.

3voto

user3439894 Points 52496

Voici un simple manipulateur que, des coussinets en fonction de votre question.

Exemple de code AppleScript :

set theNumber to 1

set theNumber to padNumberAsString(theNumber)

on padNumberAsString(n)
    set theLength to (get length of (n as string))
    if theLength is equal to 1 then
        set n to "000" & n
    else if theLength is equal to 2 then
        set n to "00" & n
    else if theLength is equal to 3 then
        set n to "0" & n
    end if
    return n
end padNumberAsString

Résultat : "0001"


En guise de démonstration, ceci crée et affiche une liste des nombres paddés entre 0 et 1000 pour montrer que le paddage a lieu.

set thePaddedList to {}
repeat with i from 0 to 1000
    set end of thePaddedList to padNumberAsString(i)
end repeat
choose from list thePaddedList

on padNumberAsString(n)
    set theLength to (get length of (n as string))
    if theLength is equal to 1 then
        set n to "000" & n
    else if theLength is equal to 2 then
        set n to "00" & n
    else if theLength is equal to 3 then
        set n to "0" & n
    end if
    return n
end padNumberAsString

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X