请教高手在C#中怎样实现简拼 答得好可以给100

ljjable 2003-12-15 04:41:45
如有两个文本框:
textbox1,textbox2当我在textbox1输入中文时在textbox2中显示他相应的简拼
如我在textbox1中输入:你好 然后在textbox2中显示NH,请高手指点指点
反之当我在进行查询时我输入简拼后显示相应的中文,当然这个前提是后台必须有个数据库,在后台数据库中查出相应的中文
希望哪位高手能帮我解决这两个问题,一定重分感谢!
...全文
139 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljjable 2003-12-25
  • 打赏
  • 举报
回复
UP
tigi 2003-12-15
  • 打赏
  • 举报
回复
用API的话,有好多的限制,不如自己去写一个函数方便。这是我个人的观点!:)
tigi 2003-12-15
  • 打赏
  • 举报
回复
需要调用拼音字库文件。我有一个PB的例子,还没时间翻译成C#。不过我想对你也会有帮助的。如果你需要我的拼音字库可以把邮箱留给我!我帮你写也行!
//*****************************************************************************
//
// Function : F_Create_PYZT
//
// Purpose : 生成字符串的拼音字头
//
// Date : January 6, 2001
//
// Arguments : string chinese_string - 待提取拼音字头的字符串
// string phone_file - 拼音字库文件名
//
// Returns : string result - 字符串的拼音字头;发生错误,返回空串
//
// Written : 高宪锋
//
// Log :
//
// DATE WHO WHAT
// ------ ----- -------------------------------------
//
//*****************************************************************************


STRING string_read,return_string,mid_str
STRING char_min
LONG start_pos,mid_pos,end_pos
INT f_number
LONG line_len,file_len

f_number=FileOpen(phone_file,LineMode!,Read!,Shared!)

IF f_number=-1 THEN

RETURN ""

END IF

FileRead(f_number,string_read)
line_len=Len(string_read)+2

file_len=FileLength(phone_file)
file_len=file_len/line_len+1

end_pos=file_len
start_pos=0

mid_str=Trim(chinese_string)

IF Match(mid_str,"^[a-zA-Z]+$") THEN

Return Upper(Left(mid_str,8))

END IF

DO WHILE Trim(mid_str)<>""

IF Asc(mid_str)<=160 THEN

If (Left(mid_str,1)>='a' AND Left(mid_str,1)<='z') OR &
(Left(mid_str,1)>='A' AND Left(mid_str,1)<='Z') Then
return_string=return_string+Left(mid_str,1)
End If
return_string=Trim(return_string)
mid_str=Right(mid_str,Len(mid_str) - 1)

ELSE

char_min=Left(mid_str,2)

DO WHILE (start_pos+1) < end_pos
mid_pos=Int((start_pos+end_pos)/2)
FileSeek(f_number,(mid_pos - 1)*line_len,FromBeginning!)
IF FileRead(f_number,string_read)=-1 THEN
EXIT
END IF
IF Left(string_read,2)<char_min THEN
start_pos=mid_pos
ELSEIF Left(string_read,2)=char_min THEN
start_pos=end_pos
ELSE
end_pos=mid_pos
END IF
LOOP

mid_str=Right(mid_str,Len(mid_str) - 2)
return_string=return_string+Left(Trim(Right(string_read,line_len - 4)),1)

END IF

end_pos=file_len
start_pos=0

LOOP

IF Trim(mid_str)<>"" THEN

RETURN ""

END IF

return_string=Trim(Upper(Left(return_string,8)))

IF FileClose(f_number)=-1 THEN

RETURN ""

END IF

RETURN return_string //返回拼音字头
haiwangstar 2003-12-15
  • 打赏
  • 举报
回复
第一个问题:

关于汉字转换为拼音的问题,到这里去看一下很详细的。http://expert.csdn.net/Expert/topic/1716/1716926.xml?temp=.6597406

第二个问题:
这个就更简单了,只要对数据库执行SELECT语句SELECT text FROM table1 WHERE spell = ?前提是这个表中已建立了两个字段:拼音和相应的汉字字串。
要注意的是返回的结果可能不只一个。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧