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 1302html的img标签:定义一个图像在网页中引入。它还有个use ... -
在js上获得cookie中指定的值
2012-08-02 10:56 791获得cookie中的"loginName" ... -
在servlet和filter中获取Spring上下文
2012-07-18 11:32 2570在servlet中 方法一:在spring上下文加载到内存后直 ... -
js作用域链的问题
2012-06-03 22:01 1131var name = "The Window&quo ... -
oracle10g导入导出命令
2011-08-09 16:50 886exp和imp一定要加$符号! -
oracle10g安装问题
2011-08-08 18:47 1124版本10g,安装是报错:ora-12638 身份证明检索失败, ... -
浏览器缓存
2011-07-18 17:16 802大家在系统开发中都可能会在js中用到ajax或者dwr,因为I ... -
文档类型 <!DOCTYPE HTML>
2011-07-15 11:00 941写html的时候需要定义文档类型,如果不定义,浏览器在渲染 ... -
log4j学习与应用总结
2011-07-09 17:03 1462最近几天研究log4j,个人的一些总结 严重声明问题 对于减少 ... -
获得一个节点对象的节点类型
2011-06-30 18:16 861html:<div id="aa"& ... -
JSTL 只有c:if 而没有 c:else
2011-06-10 14:00 12634在jsp中 我们可以在 《% %》中写if(){}else{} ... -
JSTL fmt数字日期格式化
2011-05-13 16:07 15082<%@ taglib uri="http:// ... -
el fn函数收藏
2011-05-12 11:28 1145可以截取,用fn函数: <%@ taglib pre ... -
多线程Java Socket编程示例
2011-03-30 14:53 877http://www.blogjava.net/sternin ... -
struts2 type="chain"时result的参数
2011-03-28 15:27 1740Type=“chain”时 result标签的参数可以有下面4 ... -
在eclipse中修改注释模板和myeclipse6.0下art+/不能用的解决办法
2011-03-09 15:45 1117注释模板设置 eclipse-->Window--> ... -
struts2学习笔记之转换器实现语言切换
2011-02-26 11:38 1217第一步,在工程src目录下新建属性文件struts.prope ... -
castor学习笔记
2011-02-21 16:02 2132castor是一个可以把java对象和XML进行相互转换的工具 ... -
查找出clazz的声明属性以及父类的声明属性
2010-07-08 15:33 944private List _getFields(Class c ... -
关于自定义标签rtexprvalue属性
2010-07-02 11:56 1203自定义标签时,在<attribute>标签里指定& ...
相关推荐
在中文环境中,由于汉字的特性,拼音排序成为一种实用的需求,特别是在需要按照汉字拼音首字母来排列字符串的场景下。"汉字字符串拼音排序-QT、C++"的主题涉及到如何在QT和C++环境中实现这样的功能。 首先,让我们...
数据库连接字符串的写法 数据库连接字符串是指在应用程序中连接数据库所需的字符串,用于指定连接数据库的详细信息。连接字符串的写法因数据库管理系统的不同而异,但是大致可以分为两类:使用连接字符串和使用 UDL...
在IT行业中,中文字符串的拼音首字母匹配以及英文字符串的首字母缩写是常见的文本处理需求,尤其是在数据处理、搜索引擎优化、用户界面设计等领域。这个压缩包文件"GetHighlightAcronymLib"似乎提供了一个库或者工具...
本手册将深入探讨JavaScript中的字符串,这是编程中常用的数据类型,对于理解和操作文本至关重要。 一、字符串基础 在JavaScript中,字符串是不可变的,意味着一旦创建,其内容就不能更改。字符串可以用单引号(' ')...
在VB(Visual Basic)编程中,处理字符串是常见的任务之一,其中包括将一个长字符串拆分成多个子字符串。这个过程通常称为“字符串拆分”或“分隔字符串”。在这个主题中,我们将深入探讨VB中如何实现这一操作,以及...
### 取出汉字字符串的拼音首字母:Java 实现 #### 概述 本文将详细介绍一个 Java 类 `ChineseCharToEn` 的实现方法,该类主要用于获取汉字字符串的拼音首字母。这种技术常用于需要对汉字进行快速识别或索引处理的...
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
C语言字符串转换为Python字符串的方法 C语言字符串转换为Python字符串是指将C语言中的字符串数据转换为Python中的字符串对象,以便在Python环境中使用。下面详细介绍了C语言字符串转换为Python字符串的方法。 使用...
在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
根据提供的信息,本文将详细介绍一个在SQL Server 2000环境下用于字符串拼接的自定义函数,并对该函数的功能、实现方法以及应用场景进行深入解析。 ### 一、SQL Server 2000简介 SQL Server 2000是微软发布的一款...
将“删除字符”函数拖放到前面板,设置输入为你的字符串,将“要删除的字符”设置为32,输出就是没有空格的新字符串。 3. **计算字符长度**: 计算字符串的字符长度,可以使用“字符串长度”函数。将该函数拖放到...
在编程领域,字符串操作是一项基础且重要的任务。"截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将...
在IT领域,字符串处理是一项基础且重要的任务,尤其是在编程语言如C#中。"统计字符串中子字符串出现的次数,并返回"是一个常见的需求,广泛应用于文本分析、数据挖掘以及日志处理等多个场景。本篇文章将深入探讨如何...
* 使用一个字符串分割另一个字符串 * * @param delimiter 边界上的分隔字符 * @param haystack 输入的字符串 * @param out 输出的字符串指针 * @return 分割成了多少个成员 */ int explode(char *delimiter, ...
综上所述,"修改过后的字符串处理程序"涵盖了字符串搜索算法的修复、字符串的替换和全删除功能的实现,这些都是字符串处理的核心知识点。对于程序员来说,理解和掌握这些技能对于编写高效、健壮的文本处理代码至关...
- **字符到字符串数组**:如果你有字符数组,可以使用“字符数组到字符串”函数,将每个字符数组元素转换为单独的字符串,然后用“数组构造函数”组合它们。 4. **操作字符串数组**: - **数组操作函数**:...
编写程序:从键盘上输入一个包含10个字符的字符串,把该字符串与程序中给定的字符串("bacdbcabca") //依次比较,统计两个字符串对应字符相等的数目。然后输出从键盘上输入的字符串, //并把两个字符串中对应字符不...
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
标题:按某字段合并字符串之一(简单合并) 描述:将如下形式的数据按id字段合并value字段。 id value —– —— 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到结果: id value —— ———– 1 aa,bb 2 aaa,bbb,...