In Salesforce CRM hat jedes Objekt eine alphanumerische ID mit 15 Zeichen, bei der zwischen Groß- und Kleinschreibung unterschieden wird. Wenn jemand neugierig ist, ist es tatsächlich die Basis-62-Nummer . Für die Datenmigration und -integration verwendete Tools unterstützen jedoch möglicherweise die Groß- und Kleinschreibung. Um dies zu vermeiden, können IDs sicher in alphanumerische IDs konvertiert werden, bei denen die Groß- und Kleinschreibung keine Rolle spielt. Dabei wird an die ID eine 3-stellige alphanumerische Prüfsumme angehängt. Der Konvertierungsalgorithmus lautet:
Beispiel :
a0RE000000IJmcN
Teilen Sie die ID in drei 5-stellige Blöcke auf.
a0RE0 00000 IJmcNKehre jeden Brocken um.
0ER0a 00000 NcmJIErsetzen Sie jedes Zeichen in jedem Block durch
1Großbuchstaben oder durch0andere.01100 00000 10011Ermitteln Sie für jede 5-stellige Binärzahl
idas Zeichen an der Positioniin der Verkettung von Großbuchstaben und Ziffern 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345).00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`Ausbeute:
M A THängen Sie diese Zeichen, die Prüfsumme, an die ursprüngliche ID an.
Ausgabe :
a0RE000000IJmcNMAT
Schreiben Sie ein Programm oder eine Funktion, die eine 15-stellige alphanumerische Zeichenfolge (ASCII) als Eingabe verwendet und eine 18-stellige ID zurückgibt.
Die Eingabevalidierung ist von dieser Frage ausgeschlossen. Programme können bei ungültiger Eingabe einen beliebigen Wert zurückgeben oder abstürzen.
Bitte verwenden Sie keine Salesforce propretiary Sprachen Funktionen , die diese Herausforderung trivial (wie Formel machen CASESAFEID(), die Umwandlung Idzu Stringin APEX & c).
Testfälle
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);}}. Funktioniert jedoch nur mit gültigen Salesforce-IDs.