利用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): ...
随机推荐
- async-validator 表单验证注意事项
1. this.$refs[formName].validate()里面的内容不执行 解决问题出处:https://segmentfault.com/q/1010000009679079 问题描述:1 ...
- Tensorflow可视化-P295-Tensorboard可视化
各模块含义 1>表示一个Batch的大小是不确定的 2>当两个节点之间传输的张量多与1时,可视化效果图将只显示张量的个数 3>效果图上的粗细表示两个节点之间传输的标量维度的总大小,而 ...
- 持续集成学习5 jenkins自动化测试与构建
一.jenkins参数 1.主要参数类型 2.触发构建参数 3.参数值的使用 4.给git仓库配置参数,让其构建的时候可以选择分支 5.配置password参数 6.添加Choice参数 7.其它好用 ...
- cube.js 最近版本的一些更新
有一段时间没有关注cube.js 了,刚好晚上收到一封来自官方的更新介绍,这里简单说明下 更多的数据驱动支持 bigquey, clickhouse snowflake,presto (很棒),hiv ...
- circus docker image web 运行异常问题的解决
经过查看官方文档,因为我使用的是python 较高版本,存在兼容问题,解决方法 修改基础镜像版本 代码如下: FROM python:2.7-slim-stretch LABEL AUTHOR=&qu ...
- hasura skor 构建安装
hasura skor 前边有介绍过是一个挺不错的event trigger 插件,我们可以用来进行事件通知处理 官方有提供构建的方法,但是有些还是会有点问题,所以结合构建碰到的问题,修改下 clon ...
- C博客作业02——循环结构
0.展示PTA总分 单循环题目集 嵌套循环题目集 1.本章学习总结 1.1学习内容总结 (a)while语句 while(表达式) { 循环体语句: } 执行流程:当表达式的值为"真&quo ...
- 在Modelsim波形窗口复制信号
可以通过张贴复制变量名在Modelsim波形窗口复制信号.
- 初识es
初识es es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它: ...
- nginx中的upstream使用
upstream的基本使用 upstream admin{server 127.0.0.1:9090 down;server 127.0.0.1:8080 weight=2;server 127.0. ...