如何实现这个问题?

来源:百度知道 编辑:UC知道 时间:2024/05/20 03:49:10
在当前目录下有这些文件1.wav, 2.wav, 3.wav…… 12.wav,以及a.wav, b.wav, c.wav……h.wav,这些音频文件发音就是文件名,请问我要读出下列文字,算法应该是什么样的?
1A1 1A2 1A3 1A4 1A5 1A6 1A7 1A8 1B1 1B2 1B3 1B4
1B6 1B8 1B11 1C1 1C2 1C4 1C6 1C8 1D1 1D2 1D4 1D5
1D6 1D7 1D8 1E1 1E2 1E3 1E4 1E6 1E8 1F1 1F2 1F8
1G2 1G3 1G4 1G6 1G11 1H1 1H2 1H3 1H8 1H11 2A1 2A2
2A3 2A4 2A5 2A6 2A7 2A8 2B1 2B2 2B3 2B4 2B6 2B8
2B11 2C1 2C2 2C4 2C6 2C8 2D1 2D2 2D4 2D5 2D6 2D7
2D8 2E1 2E2 2E3 2E4 2E6 2E8 2F1 2F2 2F8 2G2 2G3
2G4 2G6 2G11 2H1 2H2 2H3 2H8 2H11 3A1 3A2 N P
补充一下,如果有两个数字连在一起,就按十进位的方法读,比如遇到11,就播放11.wav这个文件,而不是播两次1.wav. 最后的那个N,P可以不读。
对了,还有一个文件,pause.wav,如果遇到空格或者制表符就播放这个文件。

能不能讲具体些呀?要哪些控件? split我会用,我会把它们拆成一组一组的。

'来个简洁算法的:
Private Sub Command1_Click()
Dim S As String, Fn As String, a() As String, b() As String, i, j, k, m
S = text1.Text '假设上述内容放在text1内
a = Split(S, vbNewLine)
For i = 0 To UBound(a) '逐行处理
b = Split(a(i), " ")
For j = 0 To UBound(b) '逐词处理
S = b(j)
For k = 1 To Len(S) '文件匹配处理
For m = Len(S) To k Step -1
Fn = App.Path & "\" & Mid(S, k, m - k + 1) & ".wav"
If Dir(Fn) <> "" Then
sndPlaySound Fn, 0 'sndPlaySound函数定义见楼上朋友写的
k = m - k + 1
Exit For
End If
Next
Next
Next
Next

代码如下。
===================
Option Explicit
Dim AppPath As String
Pri