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

如下图所示

实现的代码如下

  1. Option Explicit
  2.  
  3. ' Replace を まとめて おこなう
  4. Private Function ReplaceA(ByVal s As String, ByVal t1 As String, ByVal t2 As String) As String
  5.  
  6. Dim u1() As String: u1 = Split(t1)
  7. Dim u2() As String: u2 = Split(t2)
  8. Dim i As Integer
  9.  
  10. For i = 0 To UBound(u1)
  11. s = Replace(s, u1(i), u2(i))
  12. Next
  13.  
  14. ReplaceA = s
  15.  
  16. End Function
  17.  
  18. ' カタカナを ローマ字(英語式)に おきかえる
  19. Public Function KatakanaToRoomaziE(ByVal s As String) As String
  20.  
  21. ' 前処理
  22. s = ReplaceA(s, "ッン", "'")
  23.  
  24. ' 拗音・特殊音
  25. s = ReplaceA(s, "キャ キュ キョ", "kya kyu kyo")
  26. s = ReplaceA(s, "シャ シュ ショ", "sha shu sho")
  27. s = ReplaceA(s, "チャ チュ チョ", "cha chu cho")
  28. s = ReplaceA(s, "ニャ ニュ ニョ", "nya nyu nyo")
  29. s = ReplaceA(s, "ヒャ ヒュ ヒョ", "hya hyu hyo")
  30. s = ReplaceA(s, "ミャ ミュ ミョ", "mya myu myo")
  31. s = ReplaceA(s, "リャ リュ リョ", "rya ryu ryo")
  32. s = ReplaceA(s, "ギャ ギュ ギョ", "gya gyu gyo")
  33. s = ReplaceA(s, "ジャ ジュ ジョ", "ja ju jo")
  34. s = ReplaceA(s, "ヂャ ヂュ ヂョ", "ja ju jo")
  35. s = ReplaceA(s, "ビャ ビュ ビョ", "bya byu byo")
  36. s = ReplaceA(s, "ピャ ピュ ピョ", "pya pyu pyo")
  37.  
  38. ' 直音
  39. s = ReplaceA(s, " ", "a i u e o")
  40. s = ReplaceA(s, " ", "ka ki ku ke ko")
  41. s = ReplaceA(s, " ", "sa shi su se so")
  42. s = ReplaceA(s, " ", "ta chi tsu te to")
  43. s = ReplaceA(s, " ", "na ni nu ne no")
  44. s = ReplaceA(s, " ", "ha hi fu he ho")
  45. s = ReplaceA(s, " ", "ma mi mu me mo")
  46. s = ReplaceA(s, " ", "ya yu yo")
  47. s = ReplaceA(s, " ", "ra ri ru re ro")
  48. s = ReplaceA(s, " ", "wa i e o")
  49. s = ReplaceA(s, " ", "ga gi gu ge go")
  50. s = ReplaceA(s, " ", "za ji zu ze zo")
  51. s = ReplaceA(s, " ", "da ji zu de do")
  52. s = ReplaceA(s, " ", "ba bi bu be bo")
  53. s = ReplaceA(s, " ", "pa pi pu pe po")
  54.  
  55. ' 撥音
  56. s = Replace(s, "", "n")
  57. s = ReplaceA(s, "nb nm np", "mb mm mp")
  58.  
  59. ' 促音
  60. s = ReplaceA(s, "k s t n h m y r w", "kk ss tt nn hh mm yy rr ww")
  61. s = ReplaceA(s, "g z d b p", "gg zz dd bb pp")
  62. s = ReplaceA(s, "c f j", "tc ff jj")
  63. s = Replace(s, "", "'")
  64.  
  65. ' 長音
  66. s = Replace(s, "iー", "ii")
  67. s = Replace(s, "ー", "")
  68.  
  69. KatakanaToRoomaziE = StrConv(StrConv(s, vbNarrow), vbLowerCase)
  70.  
  71. End Function
  72.  
  73. ' EOF
  74. Function GetPhonetic(セル As Range, _
  75. Optional ByVal 変換 As Integer = 8, _
  76. Optional ByVal 全て As Boolean = False)
  77. Dim strPhonetic As String
  78. GetPhonetic = StrConv(Application.GetPhonetic(セル), 変換)
  79. strPhonetic = GetPhonetic
  80. If 全て = True Then
  81. Do Until strPhonetic = ""
  82. strPhonetic = StrConv(Application.GetPhonetic(), 変換)
  83. If strPhonetic <> "" Then
  84. GetPhonetic = GetPhonetic & " ; " & strPhonetic
  85. End If
  86. Loop
  87. End If
  88. End Function
  89.  
  90. Function DelAIUEO(ByVal romaStr As String) As String
  91. Dim delStr As String
  92. delStr = romaStr
  93. delStr = Replace(delStr, "A", "")
  94. delStr = Replace(delStr, "I", "")
  95. delStr = Replace(delStr, "U", "")
  96. delStr = Replace(delStr, "E", "")
  97. delStr = Replace(delStr, "O", "")
  98.  
  99. delStr = Replace(delStr, "a", "")
  100. delStr = Replace(delStr, "i", "")
  101. delStr = Replace(delStr, "u", "")
  102. delStr = Replace(delStr, "e", "")
  103. delStr = Replace(delStr, "o", "")
  104.  
  105. DelAIUEO = delStr
  106. 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. 20199301《Linux内核原理与分析》第十一周作业

    Linux Capability探索实验 一.实验描述 本实验中,将感受到linux capability功能在访问控制上的优势,掌握使用Capability达到遵守最小权限原则的目的,并分析linu ...

  2. oracle连接出现的坑

    一.错误代码提示 请输入用户名:  SYS 输入口令: ERROR: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 二.解决方 ...

  3. 讨论SQL语句中主副表之间的关系

    在公司这么多些时间,自己在写SQL语句这方面的功夫实在是太差劲了,有时候自己写出来的SQL语句自己都不知道能不能使用,只是自己写出来的SQL语句是不报错的,但是,这对于真正意义上的SQL语句还差的真的 ...

  4. 经肝药酶CYP3A4代谢的药物对比记录

    罗非昔布 罗非昔布,解热镇痛抗炎药,选择性环氧化酶-2(COX-2)抑制药,有研究表明,该类药可增加心脏病发作.卒中或其他严重后果概率,不良反应为,增加心肌梗死和心脏猝死的风险,现已撤市.经肝和肠壁细 ...

  5. nuxt如何处理用户登录状态持久化:nuxtServerInit 页面渲染前的store处理

    vue-cli项目中,我们可以用vuex-persistedstate,它可以使vuex的状态持久化,页面刷新都不会丢失,原理当然是localStorage啦!当然也可以使用vue-cookies进行 ...

  6. 【luoguP1414]】又是毕业季II

    题目链接 \(solution\) 暴力求每个数有多少个倍数,从大到小,数\(i\)的倍数有\(f_i\)个,那么选\(1\)~\(f_i\)个同学的答案可以为\(i\),取第一次更新的答案最大 #i ...

  7. 百度编辑器(ueditor)踩坑,图片转存无法使用

    在使用 百度编辑器 的过程中碰到了一些问题,图片转存功能无法使用, 即便是疯狂地在官方 Demo.文档.论坛甚至是 GitHub 上也没找到理想的答案.(┗|`O′|┛) (真是日了狗) 问题描述 默 ...

  8. 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等

    题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...

  9. 阿里云服务器安装配置配置MySQL

    1.先更新软件 输入 yum -y update 2.下载MySql安装包 rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el ...

  10. 2019_软工实践_Beta(3/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ? 维持进度,检查需求 展示GitHub当日代码/文档签入记录 接下来的 ...