求:将中文字符进行繁简转换的函数。

hlhtyql 2002-11-07 02:22:23
本人碰到一个项目,要求对输入的中文字符进行繁简转换,即将从别处粘贴过来的繁体字转换成简体中文;反之,当需要时,也可以将简体中文转换成繁体。

有经验和源代码的网友不妨给出,让我们共同进步。谢谢!!

email:hlhtyql@sina.com。
...全文
43 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlhtyql 2002-11-13
  • 打赏
  • 举报
回复
qiushuiwuhen(秋水无恨):

你那里有具体的例子和源代码吗?
engine_ 2002-11-12
  • 打赏
  • 举报
回复
先用asp.net或asp这些后台程序把要转换的字符先转换并进行输出,再用js进行切换!
qiushuiwuhen 2002-11-12
  • 打赏
  • 举报
回复
你说的是gbk里的简繁转化,不是gb2312到big5
gbk里的简繁转化不单单是建字库的问题,还要有词库
因为一个简体字可以对应多个繁体字,如上面的例子
希默软件 2002-11-12
  • 打赏
  • 举报
回复
那是软件才应该具备的功能,你也看到了,我上面采用的是for循环对比,如果是一个上万字的字符要转换,那效率可就不敢恭维了,不过你可以参考秋水无痕以前写的取汉字拼音,道理是一样的

http://www.csdn.net/develop/Read_Article.asp?Id=15043
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
bencalie(Bencalie):

我测试过了,的确能进行转换。可是如果转换量很大,比如一篇从网上拷贝来的文章,那我又该如何写那?

谢谢了!
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
那这样的话,就需要先把字库建立起来,然后将输入的信息到字库中一一比较,是这样吗?

具体需要参见
http://www.csdn.net/develop/Read_Article.asp?Id=15043
??
snowyf 2002-11-12
  • 打赏
  • 举报
回复
bencalie写的代码其实就是到cnStr中寻找你要替换的字符串中的每个字,如果有,就替换成twStr中对应位置的字符,所以你不能删除那两个字符串中的字符。

如果是壹贰叁肆,你还要在那两个字符串中增加,并且位置对应,例如

var cnStr="将中文字符身体进行简繁转换的函数头发展一二三四"
var twStr="將中文字符身體進行簡繁轉換的函數頭髮展壹贰叁肆"
Reker熊 2002-11-12
  • 打赏
  • 举报
回复
说来说去要有一个很好的字符映射表,这个可是很麻烦的,映射想做到那么准确是非常困难的

给我一个完整的字符映射表,我就能做出来,呵呵
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
而且假如我有别的繁体字,如壹贰叁肆等,其不是就不能转换了?
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
可是这两行会有什么关系哪?它不是一个普通的说明吗?
snowyf 2002-11-12
  • 打赏
  • 举报
回复
var cnStr="将中文字符身体进行简繁转换的函数头发展"
var twStr="將中文字符身體進行簡繁轉換的函數頭髮展"
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
snowyf(雪饮):
哪两行不要动??
snowyf 2002-11-12
  • 打赏
  • 举报
回复
这两行不要动
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
可是你看我写的不起作用啊。
=============
function change(para) {
var cnStr="";
var twStr="";
var theStr=para.split("")
for(j=0;j<theStr.length;j++){
for(i=0;i<twStr.length;i++)
if(theStr[j].toString()==twStr.charAt(i))
theStr[j]=cnStr.charAt(i)
}
return (theStr.join(""));
//alert(theStr);
}

function equalvalue() {
form1.aa.value = change("將中文字符身體進行簡繁轉換的函數頭髮展");
}

调用:
<form name="form1">
<input type="button" value="转 换" onclick="equalvalue()">
<input type="text" name="aa" value="">
</form>
希默软件 2002-11-12
  • 打赏
  • 举报
回复
return 转换后的值;

使用return语句即可让函数返回值
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
可是如果我要输出转换后的值,我应该如何传递参数呢?即不是现在的alert方式。
希默软件 2002-11-12
  • 打赏
  • 举报
回复
theStr.join("")返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。我这里是空的参数,所以把数组直接连起来中间没有任何分隔符
hlhtyql 2002-11-12
  • 打赏
  • 举报
回复
bencalie(Bencalie):

我看了这篇文章,是讲如何取汉字拼音的,你是说,繁简转换也应采取这种取值的方式吗?

另外,我还想问一下:
theStr.join("")这个方法是取出一个什么值啊??

非常感谢你!
希默软件 2002-11-11
  • 打赏
  • 举报
回复
如果你的转换不是很复杂,可以这样子,当然如果转换量很大,这种方法不可取

<script>
function change(para){
var cnStr="将中文字符身体进行简繁转换的函数头发展"
var twStr="將中文字符身體進行簡繁轉換的函數頭髮展"
var theStr=para.split("")
for(j=0;j<theStr.length;j++){
for(i=0;i<cnStr.length;i++)
if(theStr[j].toString()==cnStr.charAt(i))
theStr[j]=twStr.charAt(i)
}
alert(theStr.join(""))
}
change("简体")
change("头发")
</script>
hlhtyql 2002-11-11
  • 打赏
  • 举报
回复
感觉csdn的高手越来越不愿意共享自己的经验了。
加载更多回复(7)

87,972

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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