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 1301html的img标签:定义一个图像在网页中引入。它还有个use ... -
在js上获得cookie中指定的值
2012-08-02 10:56 789获得cookie中的"loginName" ... -
在servlet和filter中获取Spring上下文
2012-07-18 11:32 2570在servlet中 方法一:在spring上下文加载到内存后直 ... -
js作用域链的问题
2012-06-03 22:01 1128var name = "The Window&quo ... -
oracle10g导入导出命令
2011-08-09 16:50 878exp和imp一定要加$符号! -
oracle10g安装问题
2011-08-08 18:47 1120版本10g,安装是报错:ora-12638 身份证明检索失败, ... -
浏览器缓存
2011-07-18 17:16 797大家在系统开发中都可能会在js中用到ajax或者dwr,因为I ... -
文档类型 <!DOCTYPE HTML>
2011-07-15 11:00 927写html的时候需要定义文档类型,如果不定义,浏览器在渲染 ... -
log4j学习与应用总结
2011-07-09 17:03 1460最近几天研究log4j,个人的一些总结 严重声明问题 对于减少 ... -
获得一个节点对象的节点类型
2011-06-30 18:16 860html:<div id="aa"& ... -
JSTL 只有c:if 而没有 c:else
2011-06-10 14:00 12629在jsp中 我们可以在 《% %》中写if(){}else{} ... -
JSTL fmt数字日期格式化
2011-05-13 16:07 15079<%@ taglib uri="http:// ... -
el fn函数收藏
2011-05-12 11:28 1141可以截取,用fn函数: <%@ taglib pre ... -
多线程Java Socket编程示例
2011-03-30 14:53 875http://www.blogjava.net/sternin ... -
struts2 type="chain"时result的参数
2011-03-28 15:27 1732Type=“chain”时 result标签的参数可以有下面4 ... -
在eclipse中修改注释模板和myeclipse6.0下art+/不能用的解决办法
2011-03-09 15:45 1116注释模板设置 eclipse-->Window--> ... -
struts2学习笔记之转换器实现语言切换
2011-02-26 11:38 1215第一步,在工程src目录下新建属性文件struts.prope ... -
castor学习笔记
2011-02-21 16:02 2130castor是一个可以把java对象和XML进行相互转换的工具 ... -
查找出clazz的声明属性以及父类的声明属性
2010-07-08 15:33 939private List _getFields(Class c ... -
关于自定义标签rtexprvalue属性
2010-07-02 11:56 1198自定义标签时,在<attribute>标签里指定& ...
相关推荐
完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数 方案一(是方案二的包体方式)pinyin(拼音之间有空格) 方案二(较慢)常用中文字符转全拼音函数(有空格) 方案三(最优)完整简洁的Oracle获得汉字字符串拼音首字母...
在中文环境中,由于汉字的特性,拼音排序成为一种实用的需求,特别是在需要按照汉字拼音首字母来排列字符串的场景下。"汉字字符串拼音排序-QT、C++"的主题涉及到如何在QT和C++环境中实现这样的功能。 首先,让我们...
数据库连接字符串的写法 数据库连接字符串是指在应用程序中连接数据库所需的字符串,用于指定连接数据库的详细信息。连接字符串的写法因数据库管理系统的不同而异,但是大致可以分为两类:使用连接字符串和使用 UDL...
sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
本手册将深入探讨JavaScript中的字符串,这是编程中常用的数据类型,对于理解和操作文本至关重要。 一、字符串基础 在JavaScript中,字符串是不可变的,意味着一旦创建,其内容就不能更改。字符串可以用单引号(' ')...
比如,如果你想根据空格切割字符串`"Hello World"`,可以使用`split('\s')`,结果会得到`['Hello', 'World']`。 在这个压缩包中,我们有三个文件:rf.txt、www.pudn.com.txt、pudn.txt。这些文件很可能包含了一些...
java中根据汉字字符串获取拼音首字母工具类
在C#中,处理字符串时,我们经常需要从一个较大的字符串中提取出特定部分,比如位于两个已知字符串之间的子串。这在解析日志、处理配置文件或者从HTML源码中提取信息时非常常见。标题中的“字符串提取(获取两个字符...
### 取出汉字字符串的拼音首字母:Java 实现 #### 概述 本文将详细介绍一个 Java 类 `ChineseCharToEn` 的实现方法,该类主要用于获取汉字字符串的拼音首字母。这种技术常用于需要对汉字进行快速识别或索引处理的...
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
在IT领域,尤其是在编程实践中,有时我们需要将汉字字符串转换成其拼音首字母缩写,这在处理中文数据、创建搜索引擎关键词或实现特定的文本处理功能时非常有用。本项目提供了一个小程序及其源码,用于实现这个功能,...
根据提供的信息,本文将详细介绍一个在SQL Server 2000环境下用于字符串拼接的自定义函数,并对该函数的功能、实现方法以及应用场景进行深入解析。 ### 一、SQL Server 2000简介 SQL Server 2000是微软发布的一款...
将“删除字符”函数拖放到前面板,设置输入为你的字符串,将“要删除的字符”设置为32,输出就是没有空格的新字符串。 3. **计算字符长度**: 计算字符串的字符长度,可以使用“字符串长度”函数。将该函数拖放到...
在编程领域,字符串操作是一项基础且重要的任务。"截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将...
1. 分隔符的选择:确保分隔符在字符串中是唯一的,否则可能会得到不期望的结果。 2. 空格处理:如果字符串中含有连续的空格或换行符,可能会影响拆分结果,需要预处理去除这些空白字符。 3. 处理边界情况:检查是否...
综上所述,"修改过后的字符串处理程序"涵盖了字符串搜索算法的修复、字符串的替换和全删除功能的实现,这些都是字符串处理的核心知识点。对于程序员来说,理解和掌握这些技能对于编写高效、健壮的文本处理代码至关...
DB2 中的字符串处理函数可以分为多种类型,包括字符转换函数、去空格函数、取子串函数、字符串比较函数和字符串操作函数等。 一、字符转换函数 * ASCII() 函数:返回字符表达式最左端字符的 ASCII 码值。在 ASCII...
- **字符到字符串数组**:如果你有字符数组,可以使用“字符数组到字符串”函数,将每个字符数组元素转换为单独的字符串,然后用“数组构造函数”组合它们。 4. **操作字符串数组**: - **数组操作函数**:...