利用VBA来实现,输入日文之后,输出它的假名即读法
背景:当你输日文汉字的额时候,输出它的读音。
如下图所示
实现的代码如下
- Option Explicit
- ' Replace を まとめて おこなう
- Private Function ReplaceA(ByVal s As String, ByVal t1 As String, ByVal t2 As String) As String
- Dim u1() As String: u1 = Split(t1)
- Dim u2() As String: u2 = Split(t2)
- Dim i As Integer
- For i = 0 To UBound(u1)
- s = Replace(s, u1(i), u2(i))
- Next
- ReplaceA = s
- End Function
- ' カタカナを ローマ字(英語式)に おきかえる
- Public Function KatakanaToRoomaziE(ByVal s As String) As String
- ' 前処理
- s = ReplaceA(s, "ッン", "'ン")
- ' 拗音・特殊音
- s = ReplaceA(s, "キャ キュ キョ", "kya kyu kyo")
- s = ReplaceA(s, "シャ シュ ショ", "sha shu sho")
- s = ReplaceA(s, "チャ チュ チョ", "cha chu cho")
- s = ReplaceA(s, "ニャ ニュ ニョ", "nya nyu nyo")
- s = ReplaceA(s, "ヒャ ヒュ ヒョ", "hya hyu hyo")
- s = ReplaceA(s, "ミャ ミュ ミョ", "mya myu myo")
- s = ReplaceA(s, "リャ リュ リョ", "rya ryu ryo")
- s = ReplaceA(s, "ギャ ギュ ギョ", "gya gyu gyo")
- s = ReplaceA(s, "ジャ ジュ ジョ", "ja ju jo")
- s = ReplaceA(s, "ヂャ ヂュ ヂョ", "ja ju jo")
- s = ReplaceA(s, "ビャ ビュ ビョ", "bya byu byo")
- s = ReplaceA(s, "ピャ ピュ ピョ", "pya pyu pyo")
- ' 直音
- s = ReplaceA(s, "ア イ ウ エ オ", "a i u e o")
- s = ReplaceA(s, "カ キ ク ケ コ", "ka ki ku ke ko")
- s = ReplaceA(s, "サ シ ス セ ソ", "sa shi su se so")
- s = ReplaceA(s, "タ チ ツ テ ト", "ta chi tsu te to")
- s = ReplaceA(s, "ナ ニ ヌ ネ ノ", "na ni nu ne no")
- s = ReplaceA(s, "ハ ヒ フ ヘ ホ", "ha hi fu he ho")
- s = ReplaceA(s, "マ ミ ム メ モ", "ma mi mu me mo")
- s = ReplaceA(s, "ヤ ユ ヨ", "ya yu yo")
- s = ReplaceA(s, "ラ リ ル レ ロ", "ra ri ru re ro")
- s = ReplaceA(s, "ワ ヰ ヱ ヲ", "wa i e o")
- s = ReplaceA(s, "ガ ギ グ ゲ ゴ", "ga gi gu ge go")
- s = ReplaceA(s, "ザ ジ ズ ゼ ゾ", "za ji zu ze zo")
- s = ReplaceA(s, "ダ ヂ ヅ デ ド", "da ji zu de do")
- s = ReplaceA(s, "バ ビ ブ ベ ボ", "ba bi bu be bo")
- s = ReplaceA(s, "パ ピ プ ペ ポ", "pa pi pu pe po")
- ' 撥音
- s = Replace(s, "ン", "n")
- s = ReplaceA(s, "nb nm np", "mb mm mp")
- ' 促音
- s = ReplaceA(s, "ッk ッs ッt ッn ッh ッm ッy ッr ッw", "kk ss tt nn hh mm yy rr ww")
- s = ReplaceA(s, "ッg ッz ッd ッb ッp", "gg zz dd bb pp")
- s = ReplaceA(s, "ッc ッf ッj", "tc ff jj")
- s = Replace(s, "ッ", "'")
- ' 長音
- s = Replace(s, "iー", "ii")
- s = Replace(s, "ー", "")
- KatakanaToRoomaziE = StrConv(StrConv(s, vbNarrow), vbLowerCase)
- End Function
- ' EOF
- Function GetPhonetic(セル As Range, _
- Optional ByVal 変換 As Integer = 8, _
- Optional ByVal 全て As Boolean = False)
- Dim strPhonetic As String
- GetPhonetic = StrConv(Application.GetPhonetic(セル), 変換)
- strPhonetic = GetPhonetic
- If 全て = True Then
- Do Until strPhonetic = ""
- strPhonetic = StrConv(Application.GetPhonetic(), 変換)
- If strPhonetic <> "" Then
- GetPhonetic = GetPhonetic & " ; " & strPhonetic
- End If
- Loop
- End If
- End Function
- Function DelAIUEO(ByVal romaStr As String) As String
- Dim delStr As String
- delStr = romaStr
- delStr = Replace(delStr, "A", "")
- delStr = Replace(delStr, "I", "")
- delStr = Replace(delStr, "U", "")
- delStr = Replace(delStr, "E", "")
- delStr = Replace(delStr, "O", "")
- delStr = Replace(delStr, "a", "")
- delStr = Replace(delStr, "i", "")
- delStr = Replace(delStr, "u", "")
- delStr = Replace(delStr, "e", "")
- delStr = Replace(delStr, "o", "")
- DelAIUEO = delStr
- End Function
利用VBA来实现,输入日文之后,输出它的假名即读法的更多相关文章
- 利用C语言识别用户输入字符并且输出该字符ASCII码值(大小写字母篇)(含思路)
要求:从键盘输入一个字符,如果输入字符的是小写英文字母,则将其转换为大写英文字母,然后将转换后的英文字母及其ASCII码值输出到屏幕上,如果输入的是其他字符,则不转换并且直接将它及其ASCII码值输出 ...
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)
利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...
- 利用VBA+OO4O构造CTAIS开放式通用平台
利用VBA+OO4O构造CTAIS开放式通用平台 2010-06-08 14:59:28 | 来源:税务信息化论文集 | 作者:于非 易飞 摘 要:文立足于CTAIS系统体系,探讨如何通过OO4O技 ...
- [转]linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...
- 输入年月,输出月份有几天(分别用了if——else和switch)
首先是switch做的 class Program { static void Main(string[] args) {/* 题目要求:请用户输入年份,输入月份,输出该月的天数. 思路:一年中月份的 ...
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...
- Python基础之注释,算数运算符,变量,输入和格式化输出
Python的注释 注释的作用:用自己熟悉的语言,对某些代码进行标注说明,增强程序的可读性: 在python解释器解释代码的过程中,凡是#右边的,解释器都直接跳过这一行: 注释的分类 单行注释 # 这 ...
- python学习:利用循环语句完善输入设置
利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): ...
随机推荐
- 20199301《Linux内核原理与分析》第十一周作业
Linux Capability探索实验 一.实验描述 本实验中,将感受到linux capability功能在访问控制上的优势,掌握使用Capability达到遵守最小权限原则的目的,并分析linu ...
- oracle连接出现的坑
一.错误代码提示 请输入用户名: SYS 输入口令: ERROR: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 二.解决方 ...
- 讨论SQL语句中主副表之间的关系
在公司这么多些时间,自己在写SQL语句这方面的功夫实在是太差劲了,有时候自己写出来的SQL语句自己都不知道能不能使用,只是自己写出来的SQL语句是不报错的,但是,这对于真正意义上的SQL语句还差的真的 ...
- 经肝药酶CYP3A4代谢的药物对比记录
罗非昔布 罗非昔布,解热镇痛抗炎药,选择性环氧化酶-2(COX-2)抑制药,有研究表明,该类药可增加心脏病发作.卒中或其他严重后果概率,不良反应为,增加心肌梗死和心脏猝死的风险,现已撤市.经肝和肠壁细 ...
- nuxt如何处理用户登录状态持久化:nuxtServerInit 页面渲染前的store处理
vue-cli项目中,我们可以用vuex-persistedstate,它可以使vuex的状态持久化,页面刷新都不会丢失,原理当然是localStorage啦!当然也可以使用vue-cookies进行 ...
- 【luoguP1414]】又是毕业季II
题目链接 \(solution\) 暴力求每个数有多少个倍数,从大到小,数\(i\)的倍数有\(f_i\)个,那么选\(1\)~\(f_i\)个同学的答案可以为\(i\),取第一次更新的答案最大 #i ...
- 百度编辑器(ueditor)踩坑,图片转存无法使用
在使用 百度编辑器 的过程中碰到了一些问题,图片转存功能无法使用, 即便是疯狂地在官方 Demo.文档.论坛甚至是 GitHub 上也没找到理想的答案.(┗|`O′|┛) (真是日了狗) 问题描述 默 ...
- 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...
- 阿里云服务器安装配置配置MySQL
1.先更新软件 输入 yum -y update 2.下载MySql安装包 rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el ...
- 2019_软工实践_Beta(3/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ? 维持进度,检查需求 展示GitHub当日代码/文档签入记录 接下来的 ...