Dalam Salesforce CRM , setiap objek memiliki ID alfanumerik 15 karakter, yang peka huruf besar-kecil. Kalau ada yang penasaran, sebenarnya itu nomor base-62 . Namun, alat yang digunakan untuk migrasi data dan integrasi mungkin atau mungkin tidak mendukung sensitivitas kasus. Untuk mengatasinya, ID dapat dikonversi dengan aman menjadi ID alfanumerik tidak sensitif huruf-18. Dalam proses itu checksum alfanumerik 3 karakter ditambahkan ke ID. Algoritma konversi adalah:
Contoh :
a0RE000000IJmcN
Pisahkan ID menjadi tiga potongan 5 karakter.
a0RE0 00000 IJmcN
Membalikkan setiap potongan.
0ER0a 00000 NcmJI
Ganti setiap karakter di setiap chunk dengan
1
huruf besar atau0
sebaliknya.01100 00000 10011
Untuk setiap nomor biner 5 digit
i
, dapatkan karakter pada posisii
dalam gabungan huruf besar dan angka 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345
).00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`
Menghasilkan:
M A T
Tambahkan karakter-karakter ini, checksum, ke ID asli.
Keluaran :
a0RE000000IJmcNMAT
Tulis program atau fungsi yang menggunakan string 15-karakter alfanumerik (ASCII) sebagai input dan mengembalikan ID 18-karakter.
Validasi input di luar cakupan pertanyaan ini. Program dapat mengembalikan nilai atau kerusakan apa pun pada input yang tidak valid.
Tolong, jangan gunakan fitur bahasa propretiaris Salesforce yang membuat tantangan ini sepele (seperti formula CASESAFEID()
, dikonversi Id
ke String
dalam APEX & c).
Uji Kasus
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);}}
. Hanya bekerja dengan ID Tenaga Penjualan yang valid.