// 汉字拼音首字母区间(Unicode版,适合aardio所有版本)
var pyTable = {
a="阿啊艾安爱";
b="八白班包宝毕边彬兵波卞宾";
c="蔡曹岑常昌陈程成池崇楚褚";
d="戴单邓丁董杜段";
f="范方樊房费冯符傅";
g="甘高葛耿龚巩关郭";
h="韩何贺洪胡花黄霍";
j="贾江姜蒋金景靳晋荆";
k="柯孔";
l="赖蓝雷黎李连梁廖林刘柳龙卢陆路吕";
m="马梅孟莫母穆";
n="倪宁牛聂钮";
o="欧";
p="潘彭皮濮蒲";
q="钱乔秦邱启";
r="任荣阮";
s="沙尚邵沈施石时史司宋苏孙三";
t="谭汤唐陶田童涂屠";
w="万汪王韦魏温文翁巫吴伍武";
x="席夏萧谢邢徐许薛";
y="严颜杨姚叶易殷尤余俞虞于袁";
z="翟詹张章赵郑钟周朱庄";
};
// 多字节安全遍历(GBK专用)
var eachChar = function(str, cb){
var i = 1, len = string.len(str);
while(i <= len){
var b = string.byte(str, i);
var c;
if(b >= 0x81 && b <= 0xFE && i < len) { // GBK汉字首字节
c = string.sub(str, i, i+1);
i += 2;
} else {
c = string.sub(str, i, i);
i += 1;
}
console.log("eachChar(GBK): c=", c, "b=", b);
cb(c);
}
}
// 获取单个汉字的拼音首字母(兼容所有aardio版本)
var getFirstPY = function(ch){
if(type(ch) != "string" || !ch) {
console.log("getFirstPY: 非字符串或空", ch);
return "";
}
for(k,v in pyTable){
if(string.indexOf(v, ch) >= 0) {
console.log("getFirstPY: 命中", ch, "->", k);
return string.upper(k);
}
}
if(string.match(ch, "[a-zA-Z0-9]")) {
console.log("getFirstPY: 英文或数字", ch);
return string.upper(ch);
}
console.log("getFirstPY: 未命中", ch);
return ch;
}
// 获取字符串的拼音首字母
var getPY = function(str){
if(type(str)!="string" || !str) {
console.log("getPY: 非字符串或空", str);
return "";
}
var py = "";
eachChar(str, function(ch){
var pyChar = getFirstPY(ch);
py = py ++ pyChar;
console.log("getPY: ch=", ch, "pyChar=", pyChar, "py=", py);
});
console.log("getPY: 输入=", str, "输出=", py);
return py;
}