Gelen Salesforce CRM , her nesne harf duyarlı 15 karakterli alfanumerik numarası vardır. Merak eden biri varsa, aslında taban 62 sayısı . Ancak, veri taşıma ve entegrasyon için kullanılan araçlar büyük / küçük harf duyarlılığını destekleyebilir veya desteklemeyebilir. Bunun üstesinden gelmek için kimlikler güvenle 18 karakterlik büyük / küçük harfe duyarlı olmayan alfasayısal kimliklere dönüştürülebilir. Bu işlemde kimliğe 3 karakterlik alfasayısal sağlama toplamı eklenir. Dönüşüm algoritması:
Örnek :
a0RE000000IJmcN
Kimliği 5 karakterlik üç parçaya ayırın.
a0RE0 00000 IJmcN
Her parçayı ters çevirin.
0ER0a 00000 NcmJI
Her öbekteki her bir karakteri
1
büyük harfle veya0
başka bir şekilde değiştirir.01100 00000 10011
Her 5 basamaklı ikili sayı için
i
,i
büyük harfli alfabe ve 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345
) arasındaki rakamların birleşimindeki konumunda karakter alın .00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`
Verim:
M A T
Bu karakterleri, sağlama toplamını, orijinal kimliğe ekleyin.
Çıktı :
a0RE000000IJmcNMAT
15 karakterli alfasayısal (ASCII) dizgiyi girdi olarak alan ve 18 karakterli kimliği döndüren program veya işlev yazın.
Giriş doğrulaması bu sorunun kapsamı dışındadır. Programlar geçersiz girdiye herhangi bir değer döndürebilir veya çökebilir.
(Örneğin formülü olarak bu meydan önemsiz hale Salesforce propretiary dilde özelliklerini kullanmak etmeyin CASESAFEID()
, dönüştürme Id
için String
APEX & c).
Test Durumları
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);}}
. Ancak, yalnızca geçerli Salesforce kimlikleriyle çalışır.