背景:当你输日文汉字的额时候,输出它的读音。

如下图所示

实现的代码如下

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来实现,输入日文之后,输出它的假名即读法的更多相关文章

  1. 利用C语言识别用户输入字符并且输出该字符ASCII码值(大小写字母篇)(含思路)

    要求:从键盘输入一个字符,如果输入字符的是小写英文字母,则将其转换为大写英文字母,然后将转换后的英文字母及其ASCII码值输出到屏幕上,如果输入的是其他字符,则不转换并且直接将它及其ASCII码值输出 ...

  2. Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

    要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...

  3. Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)

    利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...

  4. 利用VBA+OO4O构造CTAIS开放式通用平台

    利用VBA+OO4O构造CTAIS开放式通用平台 2010-06-08 14:59:28 | 来源:税务信息化论文集 | 作者:于非 易飞 摘  要:文立足于CTAIS系统体系,探讨如何通过OO4O技 ...

  5. [转]linux shell数据重定向(输入重定向与输出重定向)详细分析

      在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...

  6. 输入年月,输出月份有几天(分别用了if——else和switch)

    首先是switch做的 class Program { static void Main(string[] args) {/* 题目要求:请用户输入年份,输入月份,输出该月的天数. 思路:一年中月份的 ...

  7. 【mybatis深度历险系列】mybatis中的输入映射和输出映射

    在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...

  8. Python基础之注释,算数运算符,变量,输入和格式化输出

    Python的注释 注释的作用:用自己熟悉的语言,对某些代码进行标注说明,增强程序的可读性: 在python解释器解释代码的过程中,凡是#右边的,解释器都直接跳过这一行: 注释的分类 单行注释 # 这 ...

  9. python学习:利用循环语句完善输入设置

    利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): ...

随机推荐

  1. BZOJ -3730(动态点分治)

    题目:在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]. 不幸的是,这片土地常常发生地震,并且随着时代的发展,城市的 ...

  2. springboot使用jpa案例

    1 创建entity实体类并生成数据库表 @Entity @Table(name="student") public class Student { @Id @GeneratedV ...

  3. L1141(bfs思想)

    一,看 1,整个方格图其实可以看做是一些不连通的图. 当然图内部必然是联通的. 2,遍历的技巧没什么. 方格图入队的技巧..额,是这样的 int gtid(int x,int y) { return ...

  4. Windows 2008R2 定时备份PostgreSQL 11.6及还原操作

    PostgreSQL 自动备份,并删除10天前的备份文件. 第一步,创建脚本,命名back.bat文件,可直接点击执行或者CMD执行此批处理命令. @ECHO OFF @setlocal enable ...

  5. vue transition实现页面切换效果

    我们都知道vue可以做成单页应用 点击的时候就能切换  如果我们要添加一些视觉效果 比如页面切换的时候有一个缓冲效果 这个时候就需要用到vue里的transition这个标签 在使用这个标签之前需要了 ...

  6. 时间time模块

    time模块: import time --时间模块 --time : 三种不同的时间格式,可以相互转换 时间戳(timestamp): --从1970年1月1日00:00:00开始按秒计算的偏移量 ...

  7. Spring Boot 配置文件 bootstrap vs application 到底有什么区别?

    用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .pr ...

  8. Windows安装Python3 curses模块

    目录 0.前提 1.pip install wheel 2.下载.whl文件 3.pip install 它 参考 0.前提 确定你已经配置好了Python相关环境,可以正常在命令行使用pip安装. ...

  9. 20189220 余超《Linux内核原理与分析》第九周作业

    理解进程调度时机跟踪分析进程调度与进程切换的过程 本章的基础知识总结 一般来说,进程调度分为三种类型:中断处理过程(包括时钟中断.I/O 中断.系统调用和异常)中,直接调用schedule,或者返回用 ...

  10. 查看DDR的频率【学习笔记】

    SDM439平台如何查看DDR的频率 通过访问如下节点查询:cat /sys/kernel/debug/clk/bimc_clk/measure 681.6MHz and higher frequen ...