public class SpellCache implements java.io.Serializable
{
private static final long serialVersionUID = -8208755962314651055L;
private static SpellCache obj_SpellCache;
static ArrayList<Spell> arr_Spell = null;
/**
* 实例初始化
*/
private SpellCache()
{
try
{
if(obj_SpellCache==null)
init();
}
catch(Exception e)
{
e.printStackTrace();
obj_SpellCache = null;
}
}
/**
* 获得拼音缓存的实例
* @return 拼音缓存的实例
*/
public static synchronized SpellCache getInstance()
{
if(obj_SpellCache == null)
{
obj_SpellCache = new SpellCache();
}
return obj_SpellCache;
}
/**
* 拼音缓存内容的初始化
*/
private void init() throws Exception
{
DBConnection dbc = new DBConnection();
ResultSet rst = null;
try
{
/// 查询出拼音内容
String str_SQL = Common.SELECT + Field.WORD + Common.COMMA +
Field.SPELL + Common.COMMA +
Field.ASPELL +
Common.S_FROM + Table.SPELL +
Common.S_ORDER + Field.WORD;
/// 查询
rst = dbc.excuteQuery(str_SQL);
/// 初始化 arr_Spell
arr_Spell = new ArrayList<Spell>();
while(rst.next())
{
char chr_Word = rst.getString(Field.WORD).charAt(0);
char chr_Spell = rst.getString(Field.SPELL).charAt(0);
String str_ASpell = rst.getString(Field.ASPELL);
arr_Spell.add(new Spell(chr_Word, chr_Spell, str_ASpell));
}
rst.close();
System.out.println("缓存中已载入" + arr_Spell.size() + "个拼音");
}
catch(Exception e)
{
throw new Exception(e.getMessage());
}
finally
{
rst.close();
dbc.freeConnection();
}
}
/**
* 获得拼音的总数
* @return int 拼音的总数
*/
public synchronized int getCount()
{
return arr_Spell.size();
}
/**
* 获得单个拼音对象
* @param chrWord 字符
* @return Spell 单个拼音缓存对象
*/
public Spell getObject(char chrWord)
{
Iterator it = arr_Spell.iterator();
while(it.hasNext())
{
Spell obj_Spell = (Spell)it.next();
if (obj_Spell.equals(chrWord)) return obj_Spell;
}
return null;
}
/**
* 获得字符的拼音头
* @param chrWord 字符
* @return String 拼音头
*/
public String getSpell(char chrWord)
{
Spell obj_Spell = getObject(chrWord);
if(obj_Spell==null) return null;
return String.valueOf(obj_Spell.getSpell());
}
/**
* 获得字符的全拼
* @param chrWord 字符
* @return String 全拼
*/
public String getASpell(char chrWord)
{
Spell obj_Spell = getObject(chrWord);
if(obj_Spell==null) return null;
return String.valueOf(obj_Spell.getASpell());
}
/**
* 获得字符串的拼音头
* @param strWord 字符串
* @return String 拼音头
*/
public String getSpell(String strWord)
{
if(strWord==null) return null;
if(strWord.equals("")) return null;
char[] chr_Single = strWord.toCharArray();
String str_Spell = "";
for(int i=0; i<chr_Single.length; i++)
{
str_Spell += getSpell(chr_Single[i]);
}
return str_Spell;
}
/**
* 获得字符串的全拼
* @param strWord 字符串
* @return String 全拼
*/
public String getASpell(String strWord)
{
if(strWord==null) return null;
if(strWord.equals("")) return null;
char[] chr_Single = strWord.toCharArray();
String str_ASpell = "";
for(int i=0; i<chr_Single.length; i++)
{
str_ASpell += getASpell(chr_Single[i]);
}
return str_ASpell;
}
/**
* 更新拼音
* @param chrWord 字符
* @param chrSpell 拼音头
* @param strASpell 全拼
*/
public synchronized void update(char chrWord,
char chrSpell,
String strASpell) throws Exception
{
update(new Spell(chrWord, chrSpell, strASpell));
return;
}
/**
* 更新拼音
* @param objSpell 单个拼音对象
*/
public synchronized void update(Spell objSpell) throws Exception
{
try
{
Spell obj_Spell = getObject(objSpell.getWord());
DataStorage obj_DS = new DataStorage();
/// 拼音缓存存在,更新
if (obj_Spell!=null)
{
obj_Spell.setSpell(objSpell.getSpell());
obj_Spell.setASpell(objSpell.getASpell());
String str_Spell = String.valueOf(objSpell.getSpell());
String str_ASpell = String.valueOf(objSpell.getASpell());
String str_Word = String.valueOf(objSpell.getWord());
String str_SQL = Common.UPDATE + Table.SPELL +
Common.S_SET + Field.SPELL + Common.EQUAL + General.addQuotes(str_Spell) + Common.COMMA +
Field.ASPELL + Common.EQUAL + General.addQuotes(str_ASpell) +
Common.S_WHERE + Field.WORD + Common.EQUAL + General.addQuotes(str_Word);
obj_DS.addSQL(str_SQL);
obj_DS.runSQL();
}
/// 拼音缓存不存在,添加
else
{
arr_Spell.add(objSpell);
String str_SQL = Common.INSERT + Table.SPELL +
General.addBracket(Field.WORD + Common.COMMA +
Field.SPELL + Common.COMMA +
Field.ASPELL) +
Common.S_VALUES +
General.addBracket(General.addQuotes(String.valueOf(objSpell.getWord())) + Common.COMMA +
General.addQuotes(String.valueOf(objSpell.getSpell())) + Common.COMMA +
General.addQuotes(objSpell.getASpell()));
obj_DS.addSQL(str_SQL);
obj_DS.runSQL();
}
return;
}
catch(Exception e)
{
throw new Exception(e.getMessage());
}
}
}
class Spell implements java.io.Serializable
{
private static final long serialVersionUID = 8537233176930218357L;
private char m_chr_Word;
private char m_chr_Spell;
private String m_str_ASpell;
public Spell()
{
}
public Spell(char chrWord, char chrSpell, String strASpell)
{
m_chr_Word = chrWord;
m_chr_Spell = chrSpell;
m_str_ASpell = strASpell;
}
public String getASpell()
{
return m_str_ASpell;
}
public void setASpell(String strASpell)
{
m_str_ASpell = strASpell;
}
public char getSpell()
{
return m_chr_Spell;
}
public void setSpell(char chrSpell)
{
m_chr_Spell = chrSpell;
}
public char getWord()
{
return m_chr_Word;
}
public void setWord(char chrWord)
{
m_chr_Word = chrWord;
}
public boolean equals(char chrValue)
{
if(m_chr_Word==chrValue) return true;
return false;
}
}
{
private static final long serialVersionUID = -8208755962314651055L;
private static SpellCache obj_SpellCache;
static ArrayList<Spell> arr_Spell = null;
/**
* 实例初始化
*/
private SpellCache()
{
try
{
if(obj_SpellCache==null)
init();
}
catch(Exception e)
{
e.printStackTrace();
obj_SpellCache = null;
}
}
/**
* 获得拼音缓存的实例
* @return 拼音缓存的实例
*/
public static synchronized SpellCache getInstance()
{
if(obj_SpellCache == null)
{
obj_SpellCache = new SpellCache();
}
return obj_SpellCache;
}
/**
* 拼音缓存内容的初始化
*/
private void init() throws Exception
{
DBConnection dbc = new DBConnection();
ResultSet rst = null;
try
{
/// 查询出拼音内容
String str_SQL = Common.SELECT + Field.WORD + Common.COMMA +
Field.SPELL + Common.COMMA +
Field.ASPELL +
Common.S_FROM + Table.SPELL +
Common.S_ORDER + Field.WORD;
/// 查询
rst = dbc.excuteQuery(str_SQL);
/// 初始化 arr_Spell
arr_Spell = new ArrayList<Spell>();
while(rst.next())
{
char chr_Word = rst.getString(Field.WORD).charAt(0);
char chr_Spell = rst.getString(Field.SPELL).charAt(0);
String str_ASpell = rst.getString(Field.ASPELL);
arr_Spell.add(new Spell(chr_Word, chr_Spell, str_ASpell));
}
rst.close();
System.out.println("缓存中已载入" + arr_Spell.size() + "个拼音");
}
catch(Exception e)
{
throw new Exception(e.getMessage());
}
finally
{
rst.close();
dbc.freeConnection();
}
}
/**
* 获得拼音的总数
* @return int 拼音的总数
*/
public synchronized int getCount()
{
return arr_Spell.size();
}
/**
* 获得单个拼音对象
* @param chrWord 字符
* @return Spell 单个拼音缓存对象
*/
public Spell getObject(char chrWord)
{
Iterator it = arr_Spell.iterator();
while(it.hasNext())
{
Spell obj_Spell = (Spell)it.next();
if (obj_Spell.equals(chrWord)) return obj_Spell;
}
return null;
}
/**
* 获得字符的拼音头
* @param chrWord 字符
* @return String 拼音头
*/
public String getSpell(char chrWord)
{
Spell obj_Spell = getObject(chrWord);
if(obj_Spell==null) return null;
return String.valueOf(obj_Spell.getSpell());
}
/**
* 获得字符的全拼
* @param chrWord 字符
* @return String 全拼
*/
public String getASpell(char chrWord)
{
Spell obj_Spell = getObject(chrWord);
if(obj_Spell==null) return null;
return String.valueOf(obj_Spell.getASpell());
}
/**
* 获得字符串的拼音头
* @param strWord 字符串
* @return String 拼音头
*/
public String getSpell(String strWord)
{
if(strWord==null) return null;
if(strWord.equals("")) return null;
char[] chr_Single = strWord.toCharArray();
String str_Spell = "";
for(int i=0; i<chr_Single.length; i++)
{
str_Spell += getSpell(chr_Single[i]);
}
return str_Spell;
}
/**
* 获得字符串的全拼
* @param strWord 字符串
* @return String 全拼
*/
public String getASpell(String strWord)
{
if(strWord==null) return null;
if(strWord.equals("")) return null;
char[] chr_Single = strWord.toCharArray();
String str_ASpell = "";
for(int i=0; i<chr_Single.length; i++)
{
str_ASpell += getASpell(chr_Single[i]);
}
return str_ASpell;
}
/**
* 更新拼音
* @param chrWord 字符
* @param chrSpell 拼音头
* @param strASpell 全拼
*/
public synchronized void update(char chrWord,
char chrSpell,
String strASpell) throws Exception
{
update(new Spell(chrWord, chrSpell, strASpell));
return;
}
/**
* 更新拼音
* @param objSpell 单个拼音对象
*/
public synchronized void update(Spell objSpell) throws Exception
{
try
{
Spell obj_Spell = getObject(objSpell.getWord());
DataStorage obj_DS = new DataStorage();
/// 拼音缓存存在,更新
if (obj_Spell!=null)
{
obj_Spell.setSpell(objSpell.getSpell());
obj_Spell.setASpell(objSpell.getASpell());
String str_Spell = String.valueOf(objSpell.getSpell());
String str_ASpell = String.valueOf(objSpell.getASpell());
String str_Word = String.valueOf(objSpell.getWord());
String str_SQL = Common.UPDATE + Table.SPELL +
Common.S_SET + Field.SPELL + Common.EQUAL + General.addQuotes(str_Spell) + Common.COMMA +
Field.ASPELL + Common.EQUAL + General.addQuotes(str_ASpell) +
Common.S_WHERE + Field.WORD + Common.EQUAL + General.addQuotes(str_Word);
obj_DS.addSQL(str_SQL);
obj_DS.runSQL();
}
/// 拼音缓存不存在,添加
else
{
arr_Spell.add(objSpell);
String str_SQL = Common.INSERT + Table.SPELL +
General.addBracket(Field.WORD + Common.COMMA +
Field.SPELL + Common.COMMA +
Field.ASPELL) +
Common.S_VALUES +
General.addBracket(General.addQuotes(String.valueOf(objSpell.getWord())) + Common.COMMA +
General.addQuotes(String.valueOf(objSpell.getSpell())) + Common.COMMA +
General.addQuotes(objSpell.getASpell()));
obj_DS.addSQL(str_SQL);
obj_DS.runSQL();
}
return;
}
catch(Exception e)
{
throw new Exception(e.getMessage());
}
}
}
class Spell implements java.io.Serializable
{
private static final long serialVersionUID = 8537233176930218357L;
private char m_chr_Word;
private char m_chr_Spell;
private String m_str_ASpell;
public Spell()
{
}
public Spell(char chrWord, char chrSpell, String strASpell)
{
m_chr_Word = chrWord;
m_chr_Spell = chrSpell;
m_str_ASpell = strASpell;
}
public String getASpell()
{
return m_str_ASpell;
}
public void setASpell(String strASpell)
{
m_str_ASpell = strASpell;
}
public char getSpell()
{
return m_chr_Spell;
}
public void setSpell(char chrSpell)
{
m_chr_Spell = chrSpell;
}
public char getWord()
{
return m_chr_Word;
}
public void setWord(char chrWord)
{
m_chr_Word = chrWord;
}
public boolean equals(char chrValue)
{
if(m_chr_Word==chrValue) return true;
return false;
}
}
发表评论
-
img usemap属性 中国地图链接
2012-08-24 16:28 1259html的img标签:定义一个图像在网页中引入。它还有个use ... -
在js上获得cookie中指定的值
2012-08-02 10:56 747获得cookie中的"loginName" ... -
在servlet和filter中获取Spring上下文
2012-07-18 11:32 2529在servlet中 方法一:在spring上下文加载到内存后直 ... -
js作用域链的问题
2012-06-03 22:01 1094var name = "The Window&quo ... -
oracle10g导入导出命令
2011-08-09 16:50 838exp和imp一定要加$符号! -
oracle10g安装问题
2011-08-08 18:47 1083版本10g,安装是报错:ora-12638 身份证明检索失败, ... -
浏览器缓存
2011-07-18 17:16 745大家在系统开发中都可能会在js中用到ajax或者dwr,因为I ... -
文档类型 <!DOCTYPE HTML>
2011-07-15 11:00 891写html的时候需要定义文档类型,如果不定义,浏览器在渲染 ... -
log4j学习与应用总结
2011-07-09 17:03 1426最近几天研究log4j,个人的一些总结 严重声明问题 对于减少 ... -
获得一个节点对象的节点类型
2011-06-30 18:16 820html:<div id="aa"& ... -
JSTL 只有c:if 而没有 c:else
2011-06-10 14:00 12577在jsp中 我们可以在 《% %》中写if(){}else{} ... -
JSTL fmt数字日期格式化
2011-05-13 16:07 15042<%@ taglib uri="http:// ... -
el fn函数收藏
2011-05-12 11:28 1098可以截取,用fn函数: <%@ taglib pre ... -
多线程Java Socket编程示例
2011-03-30 14:53 837http://www.blogjava.net/sternin ... -
struts2 type="chain"时result的参数
2011-03-28 15:27 1670Type=“chain”时 result标签的参数可以有下面4 ... -
在eclipse中修改注释模板和myeclipse6.0下art+/不能用的解决办法
2011-03-09 15:45 1072注释模板设置 eclipse-->Window--> ... -
struts2学习笔记之转换器实现语言切换
2011-02-26 11:38 1190第一步,在工程src目录下新建属性文件struts.prope ... -
castor学习笔记
2011-02-21 16:02 2095castor是一个可以把java对象和XML进行相互转换的工具 ... -
查找出clazz的声明属性以及父类的声明属性
2010-07-08 15:33 897private List _getFields(Class c ... -
关于自定义标签rtexprvalue属性
2010-07-02 11:56 1145自定义标签时,在<attribute>标签里指定& ...
相关推荐
完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数 方案一(是方案二的包体方式)pinyin(拼音之间有空格) 方案二(较慢)常用中文字符转全拼音函数(有空格) 方案三(最优)完整简洁的Oracle获得汉字字符串拼音首字母...
sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
网上有现成的提取拼音首字母程序,但我查到的版本都不支持多音字提取,以前用过一个JS的支持多音字提取的函数,就把PHP版本和JS版本综合了一下,写了个类,希望对开发者有用。
自己转载的希望有用, 主要讲数据库连接字符串的写法
输入汉字字符串,然后点击OK,输出字符串拼音缩写,若字符串中有英文字母,则英文字母仍为英文字母。
匹配中文字符串的拼音首字母或英文字符串的首字母缩写
java中根据汉字字符串获取拼音首字母工具类
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
C#字符串删除指定字符串|C#字符串删除子字符串
取出汉字字符串的拼音首字母 java 绝对好用 一般用在简写
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
字符串CString 操作用法详解,很详细的运用实例讲解CString字符串的各个操作用法。
多种字符串排序方法,含拼音排序2种。支持Unicode。
* 使用一个字符串分割另一个字符串 * * @param delimiter 边界上的分隔字符 * @param haystack 输入的字符串 * @param out 输出的字符串指针 * @return 分割成了多少个成员 */ int explode(char *delimiter, ...
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接...假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用”+”的话将得到最低的性能。但是究竟这 个性能有多差? 解压密码 www.jiangyea.com
Delphi 7.0 提取字符串中指定子字符串后的字符串,这个平时在字符处理时候使用几率也挺高的,获取指定字符串后面的字符串,比如获取扩展名等也可以用此方法,本例中要用到After函数,测试时,当单击按钮时,执行以下...
获得汉字字符串拼音首字母
PHP获取字符串拼音首字母 包含多音字扩展
编写程序:从键盘上输入一个包含10个字符的字符串,把该字符串与程序中给定的字符串("bacdbcabca") //依次比较,统计两个字符串对应字符相等的数目。然后输出从键盘上输入的字符串, //并把两个字符串中对应字符不...
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...