利用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): ...
随机推荐
- BZOJ -3730(动态点分治)
题目:在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]. 不幸的是,这片土地常常发生地震,并且随着时代的发展,城市的 ...
- springboot使用jpa案例
1 创建entity实体类并生成数据库表 @Entity @Table(name="student") public class Student { @Id @GeneratedV ...
- L1141(bfs思想)
一,看 1,整个方格图其实可以看做是一些不连通的图. 当然图内部必然是联通的. 2,遍历的技巧没什么. 方格图入队的技巧..额,是这样的 int gtid(int x,int y) { return ...
- Windows 2008R2 定时备份PostgreSQL 11.6及还原操作
PostgreSQL 自动备份,并删除10天前的备份文件. 第一步,创建脚本,命名back.bat文件,可直接点击执行或者CMD执行此批处理命令. @ECHO OFF @setlocal enable ...
- vue transition实现页面切换效果
我们都知道vue可以做成单页应用 点击的时候就能切换 如果我们要添加一些视觉效果 比如页面切换的时候有一个缓冲效果 这个时候就需要用到vue里的transition这个标签 在使用这个标签之前需要了 ...
- 时间time模块
time模块: import time --时间模块 --time : 三种不同的时间格式,可以相互转换 时间戳(timestamp): --从1970年1月1日00:00:00开始按秒计算的偏移量 ...
- Spring Boot 配置文件 bootstrap vs application 到底有什么区别?
用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .pr ...
- Windows安装Python3 curses模块
目录 0.前提 1.pip install wheel 2.下载.whl文件 3.pip install 它 参考 0.前提 确定你已经配置好了Python相关环境,可以正常在命令行使用pip安装. ...
- 20189220 余超《Linux内核原理与分析》第九周作业
理解进程调度时机跟踪分析进程调度与进程切换的过程 本章的基础知识总结 一般来说,进程调度分为三种类型:中断处理过程(包括时钟中断.I/O 中断.系统调用和异常)中,直接调用schedule,或者返回用 ...
- 查看DDR的频率【学习笔记】
SDM439平台如何查看DDR的频率 通过访问如下节点查询:cat /sys/kernel/debug/clk/bimc_clk/measure 681.6MHz and higher frequen ...