ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5048|回复: 44

[讨论] 一个关于汉字拼音拆分的难题(提供思路也好)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-5 14:52 | 显示全部楼层 |阅读模式
有一串拼音合成的字符串,如:“hǎixiánhédànlínqiányǔxiánglóngshīhuǒdìniǎoguānrénhuángshǐzhìwénzìnǎifúyīshāngtuīwèiràngguóyǒuyútáotáng”
怎样用一种算法将它拆分成单独的拼音呢??

应拆成,如:”hǎi   xián   hé   dàn......“之类的。。。


附:23个声母:”b p m f d t n l g k h j q x r zh ch sh z c s y w“ 和 24个韵母:”a o e i u ü ai ei ui ao ou iu ie üe er an en in un ün ang eng ing ong“

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-5 14:53 | 显示全部楼层
有类似的其它语言的算法,但是看不懂

TA的精华主题

TA的得分主题

发表于 2019-12-5 14:58 | 显示全部楼层
判断两个条件:
① 声母韵母的位置(是这么叫吧?)——这是截取的坐标;
② 判断 ① 前面的字母是否是否是 a e i o u ,—— 这些字母不能是一组拼音的开头

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-5 15:06 | 显示全部楼层
东南西北中发财 发表于 2019-12-5 14:58
判断两个条件:
① 声母韵母的位置(是这么叫吧?)——这是截取的坐标;
② 判断 ① 前面的字母是否是否 ...

1、首先这个思路大致我也想过,但是实现起来有点麻烦,比如:声母和韵母加起来有40几个。。难道要一个个的去比对?还有这一大串中也不止一个声母和韵母啊,这个如何判断并定出位置呢?
2、a,o,e,i,u这些也有可能是拼音开头呀,如:安(an)、儿(er)等等。。。

这个要怎么搞???主要是算法。。。用什么样的算法来分辨每个独立的拼音出来,分辨出来,至于拆分就简单多了。。

TA的精华主题

TA的得分主题

发表于 2019-12-5 15:08 | 显示全部楼层
东南西北中发财 发表于 2019-12-5 14:58
判断两个条件:
① 声母韵母的位置(是这么叫吧?)——这是截取的坐标;
② 判断 ① 前面的字母是否是否 ...

啊 饿  呕 噢 爱

TA的精华主题

TA的得分主题

发表于 2019-12-5 15:15 | 显示全部楼层
tspliu 发表于 2019-12-5 15:08
啊 饿  呕 噢 爱

  就是个大概的思路嘛,难免会有少许例外的。
除非搞个拼音字库,否则是无解的

TA的精华主题

TA的得分主题

发表于 2019-12-5 15:29 | 显示全部楼层
东南西北中发财 发表于 2019-12-5 15:15
就是个大概的思路嘛,难免会有少许例外的。
除非搞个拼音字库,否则是无解的

他这个真的有点难。。xian和xi an 输入法发展这么多年都不好判断。

TA的精华主题

TA的得分主题

发表于 2019-12-5 15:38 | 显示全部楼层
本帖最后由 mzbao 于 2019-12-5 15:43 编辑

下面代码可以进行简单的判断(声母+韵母组合的拼音),如果只有韵母就没法判断了。比如楼上说的xi an,只会判断成xian。
  1. Sub test()
  2.     Dim reg As Object, txt$, m$
  3.    
  4.     txt = "hǎixiánhédànlínqiányǔxiánglóngshīhuǒdìniǎoguānrénhuángshǐzhìwénzìnǎifúyīshāngtuīwèiràngguóyǒuyútáotáng"
  5.     Set reg = CreateObject("VBScript.Regexp")
  6.     reg.Global = True
  7.     reg.Pattern = "(b|p|m|f|d|t|n|l|g|k|h|j|q|x|r|zh|ch|sh|z|c|s|y|w)(?!(b|p|m|f|d|t|n|l|g|k|h|j|q|x|r|zh|ch|sh|z|c|s|y|w|$))"
  8.     m = reg.Replace(txt, " $1")
  9.     Debug.Print m
  10. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-5 15:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mzbao 发表于 2019-12-5 15:38
下面代码可以进行简单的判断(声母+韵母组合的拼音),如果只有韵母就没法判断了。比如楼上说的xi an,只会 ...

谢谢,我先试下代码先。。。

TA的精华主题

TA的得分主题

发表于 2019-12-5 15:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mzbao 发表于 2019-12-5 15:38
下面代码可以进行简单的判断(声母+韵母组合的拼音),如果只有韵母就没法判断了。比如楼上说的xi an,只会 ...

还是很厉害的,我就没耐性写这么长的正则。比我那简陋的方法要好得多
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 12:37 , Processed in 0.046187 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表