Dans Salesforce CRM , chaque objet possède un ID alphanumérique à 15 caractères, qui respecte la casse. Si quelqu'un est curieux, c'est en fait le numéro de base 62 . Cependant, les outils utilisés pour la migration et l'intégration des données peuvent ou non prendre en charge la sensibilité à la casse. Pour surmonter cela, les identifiants peuvent être convertis en toute sécurité en identifiants alphanumériques insensibles à la casse de 18 caractères. Dans ce processus, une somme de contrôle alphanumérique à 3 caractères est ajoutée à l'ID. L'algorithme de conversion est:
Exemple :
a0RE000000IJmcN
Divisez l'ID en trois morceaux de 5 caractères.
a0RE0 00000 IJmcN
Inversez chaque morceau.
0ER0a 00000 NcmJI
Remplacez chaque caractère de chaque bloc par
1
s'il est en majuscule ou par0
sinon.01100 00000 10011
Pour chaque nombre binaire à 5 chiffres
i
, obtenez le caractère à la positioni
dans la concaténation de l'alphabet majuscule et des chiffres 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345
).00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`
Rendement:
M A T
Ajoutez ces caractères, la somme de contrôle, à l'ID d'origine.
Sortie :
a0RE000000IJmcNMAT
Écrire un programme ou une fonction qui prend en entrée une chaîne alphanumérique (ASCII) de 15 caractères et renvoie un ID de 18 caractères.
La validation des entrées est hors de portée de cette question. Les programmes peuvent retourner n'importe quelle valeur ou planter sur une entrée non valide.
S'il vous plaît, ne pas utiliser les fonctionnalités de Salesforce langues propretiary qui rendent ce défi trivial (comme la formule CASESAFEID()
, la conversion Id
à String
Apex et c).
Cas de test
a01M00000062mPg -> a01M00000062mPgIAI
001M000000qfPyS -> 001M000000qfPySIAU
a0FE000000D6r3F -> a0FE000000D6r3FMAR
0F9E000000092w2 -> 0F9E000000092w2KAA
aaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaAAA
AbCdEfGhIjKlMnO -> AbCdEfGhIjKlMnOVKV
aBcDEfgHIJKLMNO -> aBcDEfgHIJKLMNO025
public class X{public X(Id i){System.debug((String)i);}}
. Fonctionne uniquement avec des ID Salesforce valides.