Anyway the macro below takes 2 seconds on my Mac mini 2 GHz when running it 1000 times with ‘膚’ (the last item in the array) selected. I don’t know if treating characters not as texts but as numerical values would make a significant difference but this trick enables you to get rid of
commands.
Code: Select all
Debug.setCodeProfilingEnabled true
$doc = Document.active
if $doc == undefined
exit
end
$j = 1000 # for testing
while $j # for testing
$list = Array.new (0x8A00, 0x8A9E, 0x8B02, 0x8A2A, 0x8ACB, 0x53EC, 0x5831, 0x544A, 0x8AEB, 0x8A0E, 0x53CD, 0x5FA9, 0x820D, 0x6B21, 0x5982, 0x99B3, 0x9A5F, 0x4FB5, 0x8972, 0x5954, 0x4EA1, 0x9010, 0x53CA, 0x57F7, 0x514D, 0x4EAB, 0x85A6, 0x5716, 0x865E, 0x514B, 0x582A, 0x6709, 0x7121, 0x662D, 0x7A46, 0x52E4, 0x4E4F, 0x4E82, 0x6574, 0x5169, 0x8CB3, 0x5175, 0x8ECA, 0x7532, 0x4ECB, 0x5352, 0x4E58, 0x541B, 0x5E2B, 0x59D1, 0x5973, 0x65CF, 0x9EE8, 0x8B8E, 0x6CB3, 0x9632, 0x57CE, 0x6C60, 0x7530, 0x9928, 0x8FAD, 0x8B1D, 0x8CAC, 0x8B93, 0x722D, 0x4F7F, 0x4EE4, 0x5C6C, 0x6258, 0x5F80, 0x4F86, 0x53BB, 0x5F9E, 0x9055, 0x5373, 0x5C31, 0x8DA8, 0x8D74, 0x6230, 0x64CA, 0x5F15, 0x537B, 0x99AE, 0x64DA, 0x7D04, 0x89E3, 0x91CB, 0x5177, 0x7D66, 0x8A08, 0x8B00, 0x6703, 0x7FD2, 0x75BE, 0x75C5, 0x9913, 0x53AD, 0x8870, 0x5D29, 0x5331, 0x56F0, 0x4F88, 0x9761, 0x5BE1, 0x5C11, 0x5FAE, 0x5F37, 0x56FA, 0x518D, 0x4E09, 0x5E1D, 0x5F8C, 0x738B, 0x4FAF, 0x5B50, 0x606F, 0x5B97, 0x5EDF, 0x8A69, 0x66F8, 0x79AE, 0x6A02, 0x77E5, 0x8B58, 0x898B, 0x793A, 0x8996, 0x89C0, 0x671B, 0x77DC, 0x54C0, 0x5379, 0x61BE, 0x6055, 0x61A4, 0x60A3, 0x6301, 0x63AA, 0x62F1, 0x653B, 0x7ACA, 0x8A85, 0x7FE6, 0x4FEE, 0x8B1B, 0x8A2D, 0x7ACB, 0x5FE0, 0x4FE1, 0x8AD2, 0x6B63, 0x90AA, 0x8F9F, 0x597D, 0x60E1, 0x606D, 0x656C, 0x614E, 0x82DF, 0x986F, 0x8457, 0x76F8, 0x5E25, 0x58EB, 0x50D5, 0x5FA1, 0x53F3, 0x76DC, 0x8CCA, 0x570B, 0x5BB6, 0x675C, 0x7A37, 0x4EC1, 0x7FA9, 0x9053, 0x5FB7, 0x6587, 0x8CEA, 0x8272, 0x81ED, 0x5148, 0x524D, 0x540E, 0x5167, 0x5916, 0x9593, 0x884C, 0x8D70, 0x51FA, 0x5165, 0x4E4B, 0x9069, 0x9032, 0x9000, 0x903E, 0x9038, 0x903C, 0x6C7A, 0x6CBB, 0x6A39, 0x85DD, 0x4E8B, 0x755C, 0x4FDD, 0x611B, 0x50B7, 0x5BB3, 0x6BD4, 0x55BB, 0x8AA0, 0x507D, 0x5584, 0x6DEB, 0x51F6, 0x758F, 0x621A, 0x98E2, 0x5B70, 0x6ECB, 0x70C8, 0x8D0D, 0x5171, 0x540C, 0x6B8A, 0x7570, 0x65A4, 0x921E, 0x953A, 0x500D, 0x653F, 0x6559, 0x6CD5, 0x8853, 0x52E2, 0x6578, 0x671D, 0x91CE, 0x5857, 0x6C5F, 0x95DC, 0x5BAE, 0x5E9C, 0x8863, 0x51A0, 0x5C68, 0x5546, 0x8CC8, 0x65C5, 0x5F92, 0x5E74, 0x6B72, 0x8AAA, 0x807D, 0x6BC0, 0x8B7D, 0x52F8, 0x5C45, 0x767B, 0x81E8, 0x904E, 0x7A31, 0x91CF, 0x9B3B, 0x5E02, 0x5047, 0x96E2, 0x5408, 0x56E0, 0x6539, 0x4F5C, 0x70BA, 0x53D6, 0x6C42, 0x5949, 0x81F4, 0x5F97, 0x76CA, 0x7AED, 0x5805, 0x5229, 0x5B8C, 0x5099, 0x9673, 0x6545, 0x7AAE, 0x96E3, 0x5937, 0x5E73, 0x5EB8, 0x5DF2, 0x5FC5, 0x4E00, 0x53C3, 0x4EC0, 0x4F2F, 0x6666, 0x6714, 0x6642, 0x4E16, 0x671F, 0x5B98, 0x540F, 0x7235, 0x6B0A, 0x8861, 0x679C, 0x5BE6, 0x8070, 0x660E, 0x529F, 0x540D, 0x5317, 0x4E2D, 0x4E0B, 0x9075, 0x5F82, 0x5FB5, 0x6B78, 0x965F, 0x964D, 0x6D41, 0x653E, 0x6E38, 0x6D6E, 0x96C6, 0x91C7, 0x53D4, 0x632F, 0x63F4, 0x64CD, 0x79C9, 0x8209, 0x65AF, 0x4F10, 0x7A3C, 0x7A61, 0x7372, 0x7D0D, 0x4EA4, 0x932F, 0x88AB, 0x4EFB, 0x8CA0, 0x65BD, 0x7528, 0x5236, 0x8CBD, 0x61F7, 0x6155, 0x61F2, 0x60BC, 0x6DD1, 0x5E78, 0x5077, 0x8584, 0x96AA, 0x963B, 0x60A0, 0x7687, 0x6C38, 0x5B54, 0x4E9F, 0x5EB6, 0x88D8, 0x8910, 0x88F3, 0x5EAD, 0x5B87, 0x755D, 0x6240, 0x9A42, 0x99DF, 0x7B56, 0x77E2, 0x8EAC, 0x8EAB, 0x9818, 0x6B66, 0x4EC7, 0x8026, 0x5FB5, 0x6536, 0x767C, 0x5C01, 0x68C4, 0x4FDF, 0x9077, 0x5F99, 0x907A, 0x5931, 0x5B58, 0x8655, 0x5750, 0x9047, 0x63A5, 0x627F, 0x6276, 0x523A, 0x6298, 0x622E, 0x554F, 0x5C0D, 0x8A31, 0x7701, 0x5BE9, 0x616E, 0x6028, 0x5FCD, 0x5FEB, 0x8208, 0x5EE2, 0x8B8A, 0x66F2, 0x76F4, 0x9577, 0x5C0F, 0x8CAA, 0x5EC9, 0x8F15, 0x91CD, 0x72C2, 0x6B86, 0x5371, 0x9762, 0x53E3, 0x9F52, 0x8033, 0x76EE, 0x6307, 0x98EF, 0x98DF, 0x670D, 0x98FE, 0x5E03, 0x9B25, 0x5F0F, 0x6AA2, 0x82F1, 0x9748, 0x8C6A, 0x7136, 0x4E14, 0x6216, 0x66FE, 0x66F4, 0x6F38, 0x4FF1, 0x4E26, 0x800C, 0x82E5, 0x723E, 0x5EFA, 0x7F6E, 0x7F77, 0x5B78, 0x990A, 0x4E7E, 0x8B01, 0x5F87, 0x77EF, 0x6548, 0x7559, 0x9063, 0x9022, 0x5019, 0x5EF6, 0x52DD, 0x6557, 0x5B88, 0x7834, 0x9A0E, 0x4F0F, 0x570D, 0x7A81, 0x79BD, 0x7E31, 0x8CFC, 0x6291, 0x6309, 0x62D4, 0x64E2, 0x633E, 0x5C07, 0x70DD, 0x4EA8, 0x9867, 0x5BDF, 0x88C1, 0x65B7, 0x594F, 0x6555, 0x59D4, 0x6350, 0x8A73, 0x8A50, 0x8207, 0x596A, 0x81F3, 0x6B62, 0x5BE4, 0x5BD0, 0x6068, 0x9A5A, 0x5180, 0x8CB4, 0x8CE4, 0x58EF, 0x5927, 0x591A, 0x7BE4, 0x5C08, 0x58F9, 0x7A0D, 0x7565, 0x8F12, 0x7336, 0x9670, 0x967D, 0x4F11, 0x548E, 0x6A5F, 0x8981, 0x7956, 0x8CD3, 0x90CE, 0x7537, 0x90E8, 0x66F9, 0x9130, 0x91CC, 0x7344, 0x95D5, 0x7960, 0x7B2C, 0x5C4F, 0x5E33, 0x58C1, 0x6848, 0x5B57, 0x66F8, 0x9805, 0x4E73, 0x9AD4, 0x610F, 0x8AC2, 0x8ADB, 0x8AA3, 0x8FAF, 0x8A34, 0x6190, 0x9594, 0x540A, 0x9664, 0x62DC, 0x71DF, 0x52D9, 0x7A4D, 0x805A, 0x5C0B, 0x8FED, 0x4EE3, 0x66FF, 0x6210, 0x9042, 0x7CFB, 0x7D2F, 0x7F88, 0x4FC2, 0x727D, 0x7E23, 0x7D50, 0x7D55, 0x64C5, 0x62AB, 0x62C9, 0x59E6, 0x56DE, 0x96C5, 0x4FD7, 0x516C, 0x79C1, 0x504F, 0x5168, 0x7368, 0x7279, 0x919C, 0x964B, 0x7A62, 0x7384, 0x7D20, 0x767D, 0x65B9, 0x5919, 0x60DF, 0x9704, 0x6F22, 0x666F, 0x66DC, 0x90FD, 0x9091, 0x9119, 0x908A, 0x585E, 0x6BB7, 0x5468, 0x80E1, 0x865C, 0x620E, 0x5021, 0x512A, 0x4F0E, 0x7681, 0x5BA6, 0x8C4E, 0x81E7, 0x7372, 0x797F, 0x4F4D, 0x7522, 0x696D, 0x8CA8, 0x8CC2, 0x8CC7, 0x8CA1, 0x8CC4, 0x6027, 0x60C5, 0x8072, 0x97FF, 0x62F3, 0x8173, 0x7AEF, 0x7DD2, 0x7BC0, 0x5EA6, 0x8B70, 0x8AD6, 0x8AF7, 0x8CB6, 0x8B2B, 0x65A5, 0x5BA3, 0x8912, 0x8D08, 0x985B, 0x8986, 0x7387, 0x8A63, 0x6B77, 0x5BD3, 0x5BC4, 0x7981, 0x6212, 0x6043, 0x73A9, 0x8086, 0x6577, 0x5316, 0x52A0, 0x640D, 0x523B, 0x52D2, 0x9B31, 0x8212, 0x5F35, 0x5F1B, 0x662F, 0x975E, 0x80FD, 0x53EF, 0x4EE5, 0x51E1, 0x8056, 0x6B98, 0x66B4, 0x7518, 0x8F9B, 0x9BAE, 0x655D, 0x5BD2, 0x6EAB, 0x5E7D, 0x51A5, 0x5967, 0x7CBE, 0x773E, 0x4FBF, 0x5609, 0x907D, 0x901F, 0x5F4C, 0x6108, 0x5C24, 0x6975, 0x751A, 0x6700, 0x592B, 0x5A66, 0x5B30, 0x5B69, 0x89AA, 0x7737, 0x7AF9, 0x6728, 0x7A40, 0x58D1, 0x4EAD, 0x81FA, 0x90CA, 0x589F, 0x6750, 0x624D, 0x7C3F, 0x7C4D, 0x72C0, 0x985E, 0x58FD, 0x547D, 0x5FD7, 0x8DA3, 0x6D95, 0x6CE3, 0x818F, 0x6FA4, 0x5E37, 0x84CB, 0x6897, 0x6982, 0x672C, 0x672B, 0x7D00, 0x8F09, 0x76E3, 0x64AB, 0x6E38, 0x63DA, 0x6297, 0x596E, 0x6C88, 0x6C92, 0x901A, 0x9054, 0x8FA8, 0x6790, 0x5224, 0x5207, 0x63A8, 0x79FB, 0x9769, 0x805E, 0x5BBF, 0x96A8, 0x6CAE, 0x64EC, 0x6E2C, 0x7576, 0x9808, 0x9952, 0x79C0, 0x9E97, 0x5DE5, 0x535A, 0x6838, 0x5947, 0x5076, 0x4E39, 0x7D05, 0x5141, 0x821B, 0x5BE7, 0x8C6B, 0x5C1A, 0x6538, 0x752B, 0x804A, 0x532A, 0x53A5, 0x7D93, 0x5178, 0x7C21, 0x7BC7, 0x8A5E, 0x8CE6, 0x5E8F, 0x9298, 0x8A84, 0x8D0A, 0x7AE0, 0x8868, 0x65E8, 0x98A8, 0x9A37, 0x7FF0, 0x85FB, 0x97FB, 0x5F8B, 0x69AE, 0x83EF, 0x8ECC, 0x7BC4, 0x898F, 0x5247, 0x6E96, 0x6606, 0x5F1F, 0x5F62, 0x8DE1, 0x7DBA, 0x7DF4, 0x502B, 0x5E38, 0x7DB2, 0x7DAD, 0x5951, 0x5E7E, 0x59CB, 0x7D42, 0x7F9E, 0x8FB1, 0x5275, 0x9020, 0x6F5B, 0x85CF, 0x6B65, 0x5C65, 0x6795, 0x85C9, 0x51CC, 0x53B2, 0x8105, 0x8FEB, 0x9695, 0x843D, 0x904B, 0x8F38, 0x5FAD, 0x5F79, 0x620D, 0x52DF, 0x5439, 0x5531, 0x53E9, 0x5F48, 0x8B80, 0x557C, 0x865F, 0x8A0A, 0x8A70, 0x6558, 0x8A34, 0x6479, 0x5BEB, 0x6392, 0x6518, 0x7AC4, 0x5217, 0x5782, 0x5C0A, 0x76DB, 0x865B, 0x6789, 0x548C, 0x9806, 0x51DC, 0x51DD, 0x721B, 0x6F2B, 0x8D64, 0x78A7, 0x9752, 0x84BC, 0x4E4D, 0x66AB, 0x6BCF, 0x65E2, 0x537F, 0x5085, 0x5100, 0x5BB9, 0x7965, 0x6B83, 0x689D, 0x7406, 0x652F, 0x8449, 0x6735, 0x7A4E, 0x8ED2, 0x5195, 0x5EBE, 0x5EE9, 0x5E1B, 0x7E37, 0x6243, 0x7256, 0x6979, 0x6ABB, 0x6881, 0x9675, 0x6D25, 0x6D66, 0x7587, 0x964C, 0x6661, 0x66DB, 0x584A, 0x792B, 0x6387, 0x63A7, 0x636B, 0x628A, 0x6311, 0x6414, 0x6295, 0x64F2, 0x905E, 0x8E48, 0x8EA1, 0x5347, 0x7DE3, 0x5043, 0x50D5, 0x6583, 0x50BE, 0x8046, 0x773A, 0x7747, 0x7704, 0x77BB, 0x56DE, 0x9084, 0x901D, 0x5206, 0x8A23, 0x60B8, 0x615F, 0x60B5, 0x6168, 0x8B66, 0x60D5, 0x6B32, 0x611F, 0x914C, 0x9179, 0x9163, 0x89BA, 0x592E, 0x95CC, 0x6E05, 0x6F84, 0x6E3E, 0x5B89, 0x9591, 0x4E56, 0x4E92, 0x7E41, 0x7169, 0x6025, 0x5FFD, 0x4F46, 0x661F, 0x8FB0, 0x5CB3, 0x4E18, 0x5DBA, 0x68E7, 0x95A3, 0x7538, 0x85E9, 0x82D1, 0x96B4, 0x5879, 0x58B3, 0x8E4A, 0x5F91, 0x6C40, 0x6D32, 0x6E1A, 0x768B, 0x6DAF, 0x5858, 0x57A0, 0x8F26, 0x8F42, 0x8F45, 0x8F4D, 0x7C2A, 0x7E93, 0x7D31, 0x7DAC, 0x887E, 0x8966, 0x8882, 0x7FB9, 0x98E7, 0x7D72, 0x7BA1, 0x5F26, 0x9F13, 0x9F19, 0x50DA, 0x7FA4, 0x8F29, 0x601D, 0x7D22, 0x9452, 0x8CDE, 0x6599, 0x60F3, 0x5360, 0x535C, 0x6232, 0x5F04, 0x52D5, 0x5B9A, 0x99D0, 0x4F4F, 0x4F9D, 0x501A, 0x96D5, 0x88FD, 0x751F, 0x6D88, 0x6DF9, 0x6F0F, 0x6CDB, 0x6DB5, 0x8499, 0x853D, 0x852D, 0x7099, 0x5556, 0x9909, 0x6582, 0x8CA2, 0x6FC0, 0x6FEF, 0x62C2, 0x9006, 0x51CB, 0x96F6, 0x5C60, 0x6EC5, 0x7F44, 0x76E1, 0x4E86, 0x8096, 0x66A8, 0x902E, 0x669D, 0x9EEF, 0x7E96, 0x6089, 0x8D0F, 0x77ED, 0x9A55, 0x6162, 0x5984, 0x5C64, 0x55AC, 0x803F, 0x6E3A, 0x7E1F, 0x7A20, 0x7D9C, 0x96DC, 0x5FA7, 0x5875, 0x9744, 0x5DD2, 0x5CA9, 0x963F, 0x9685, 0x7554, 0x969B, 0x7DB8, 0x7E82, 0x5E8A, 0x84D0, 0x599D, 0x5333, 0x5EDA, 0x7B75, 0x808C, 0x819A)
$char = $doc.selectedSubstrings
$char = $char.join ''
$charValue = $char.characterAtIndex 0
$i = $list.indexOfValue $charValue
if $i == -1
$char.findAndReplace '(?<=\A.)\p{Any}+', '', 'E'
$output = "'$char' not in the list"
else
$output = $i + 1
end
$j -= 1 # for testing
end # for testing
exit # for testing
exit $output
P.S. I’d like to have
command.