转载:
http://library.iteye.com/blog/163653
public class GB2Alpha{
private static final char[] alphatable =
{
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};
/**
* 汉字拼音首字母编码表,可以如下方法得到:
* 字母Z使用了两个标签,这里有27个值, i, u, v都不做声母, 跟随前面的字母(因为不可以出现,所以可以随便取)
* private static final char[] chartable =
{
'啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',
'击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然',
'撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座'
};
*
private static final int[] table = new int[27];
* static
{
for (int i = 0; i < 27; ++i) {
table[i] = gbValue(chartable[i]);
System.out.print(table[i]+" ");
}
}
*/
private static final int[] table = new int[]{
45217, 45253, 45761, 46318, 46826,
47010, 47297, 47614, 47614, 48119,
49062, 49324, 49896, 50371, 50614,
50622, 50906, 51387, 51446, 52218,
52218, 52218, 52698, 52980, 53689, 54481, 55289};
public GB2Alpha() {
}
/**
* 主函数, 输入字符, 得到他的声母, 英文字母返回对应的大写字母 其他非简体汉字返回 '*'
*/
public char Char2Alpha(char ch) {
if (ch >= 'a' && ch <= 'z')
return (char) (ch - 'a' + 'A');
if (ch >= 'A' && ch <= 'Z')
return ch;
int gb = gbValue(ch);
if (gb < table[0])
return '*';
for(int i = 0; i < 26; ++i){
if(match(i, gb)){
if(i >= 26)
return '*';
else
return alphatable[i];
}
}
return '*';
}
/**
* 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串
*/
public String String2Alpha(String str) {
String Result = "";
try {
for (int i = 0; i < str.length(); i++) {
Result += Char2Alpha(str.charAt(i));
}
} catch (Exception e) {
Result = " ";
}
return Result;
}
private boolean match(int i, int gb) {
if (gb < table[i])
return false;
int j = i + 1;
//字母Z使用了两个标签
while (j < 26 && (table[j] == table[i]))
++j;
if (j == 26)
return gb <= table[j];
else
return gb < table[j];
}
/**
* 取出传入汉字的编码
*/
private static int gbValue(char ch) {
String str = new String();
str += ch;
try {
byte[] bytes = str.getBytes("GB2312");
if (bytes.length < 2)
return 0;
return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);
} catch (Exception e) {
return '*';
}
}
/**
* 测试输出
*/
public static void main(String[] args) {
GB2Alpha gb2A = new GB2Alpha();
System.out.println("拼音首字母为"+gb2A.String2Alpha("中茵股份有限公司"));
}
}
分享到:
相关推荐
4. **模糊查询**:在实现输入首字完成模糊查询功能时,可以将用户输入的首字母与存储的首字母串进行匹配,找出所有首字母匹配的记录。 在提供的文件列表中,`fGetPY.sql`可能是包含创建拼音查找表和实现此功能的SQL...
例如,用户输入"A",程序可以找出所有以"A"开头的拼音首字母的汉字。 4. **优化与性能**:如果处理大量数据,可能需要考虑缓存转换结果,避免重复计算。另外,对于多线程环境,需要注意同步问题。 5. **错误处理**...
在转换得到完整拼音后,通过对每个单词进行处理,提取出首字母。对于多音字,可能需要根据上下文确定合适的读音。 3. `handleExceptions()`:考虑到汉字转拼音过程中可能出现的异常,比如编码不支持、找不到对应...
`fristPinyin`函数的主要作用是获取一个中文字符串的第一个汉字的拼音首字母。它首先通过`CONVERT`函数将中文字符转换为GBK编码格式,然后提取第一个字节的十六进制值。通过`INTERVAL`函数判断这个值在哪个汉字拼音...
作者分析了GBK字符集中汉字的内码表,找出了以拼音首字母a至z开头的汉字,并给出了对应关系。这种对应关系可以用来确定任意汉字的拼音首字母。 最后,文章演示了如何编写一个名为trans_initial_letter的函数来实现...
Java获取中文首字母的jar包,如描述中提到的`pinyin4j-2.5.0.jar`,是Java编程领域中处理汉字拼音转换的一个重要工具。在处理中文字符时,尤其是进行数据检索、排序或者关键词提取时,将中文转化为拼音能够带来很大...
2. **首字母匹配**:用户输入首字母时,遍历所有选项的拼音数组,找出以该首字母开头的选项。如果用户输入的是完整的拼音,可以使用更复杂的匹配算法,如模糊匹配。 3. **实时更新结果**:每当用户在搜索框中输入...
4. 利用预设的汉字范围段与首字节值进行比较,找出对应的汉语拼音首字母。 5. 如果不在编码范围内,则返回false。 这个函数的局限性是它只适用于GB2312编码的中文字符串。由于现代互联网环境中文编码方式可能更为...
4. **过滤和排序**:根据输入的首字母过滤数据源,找出所有匹配的项,并可能按某种规则(如拼音顺序)排序。 5. **虚拟化**:为了处理大量数据,可能会用到ListBox或DataGrid的虚拟化技术,只加载视口内的数据,...
在VB(Visual Basic)编程环境中,拼音简码和拼音首字母查询是一项常见的需求,尤其是在处理汉字数据时。本文将深入探讨如何在VB中实现这一功能,以帮助开发者更高效地处理汉字与拼音之间的转换。 首先,我们需要...
恭喜发财 gōng xǐ fā cái gong-xi-fa-cai G X F C G X F C 一二三四 yī èr sān sì yi-er-san-si Y ER S S Y E S S 长颈鹿 cháng jǐng lù chang-jing-lu CH J L C J L 长大 zhǎng dà zhang-da ZH D...
7. **调试技巧**:在开发和测试过程中,熟练使用调试工具如Visual Studio的调试器,可以帮助找出代码中的问题。 8. **性能优化**:对于大规模的汉字处理,性能优化是必要的。这可能包括减少内存占用、优化查找算法...
如果字符是汉字(其十六进制值大于'B0'),则调用`getLetter()`函数来获取对应的拼音首字母,并打印出来。如果字符不是汉字,就直接打印原字符。 `getLetter()`函数是一个关键的辅助函数,它接收一个数字参数,该...
2. **数据预处理**:获取到每个数据项的拼音后,我们需要对数据进行预处理,找出每个不同首字母的数据集合,并按照字母顺序排序。这一步通常在后台线程完成,以避免阻塞UI。 3. **创建索引列表**:基于预处理的结果...
获取GBK字的拼音的首字母 ...若输入是中文字符则返回拼音的首字母 若输入是中文字符但是该字符不知道如何发音,则返回空字符。 下载之前请查看:http://blog.csdn.net/z3h/archive/2011/04/05/6302890.aspx
1. **拼音匹配**:根据用户输入的拼音首字母,找出所有以该首字母开头的汉字。这需要遍历Combobox的Items列表,对每个汉字调用拼音转换函数,比较首字母是否匹配。 2. **过滤内容**:一旦找到匹配的汉字,将其保留,...
如果找不到,则可能是因为该字符不是汉字或者不在预定义的范围内。 3. **异常处理**:对于非汉字字符或不在预定义范围内的Unicode码点,程序会直接忽略不作处理,避免出现错误的拼音。 #### 总结 这个JSP程序提供...
遍历排序后的数据源,找出不同的首字母并添加到这个列表中。 4. 实现Adapter:创建一个自定义的Adapter,它不仅需要显示数据,还需要处理点击A-Z分组时的跳转。在getViewTypeCount()方法中返回2,表示两种类型的...
它没有完全遵循正常的排序逻辑,即数字小于所有字母,字母小于所有中文,且中文根据首字拼音的首字母排序。当前的实现仅保证了字母比中文小,但没有处理数字与字母、数字与中文之间的关系。为了实现完整的逻辑,我们...
当用户在输入框中键入字符时,组件会实时将输入的汉字转换为拼音,然后比较拼音的首字母,找出与之匹配的列表项。 其次,自动定位功能是通过监听用户的输入事件来实现的。每当用户输入一个字符,STComboBox都会触发...