效果展示:
源数据 | 结果 |
三球 | 3 |
四球 | 4 |
*两球 | -2 |
*九球 | -9 |
平手 | 0 |
*平/半 | -0/0.5 |
半球 | 0.5 |
半球 | 0.5 |
半球 | 0.5 |
半球 | 0.5 |
半球 | 0.5 |
半球 | 0.5 |
两球 | 2 |
一/球半 | 1/1.5 |
平/半 | 0/0.5 |
平/半 | 0/0.5 |
*平/半 | -0/0.5 |
*平/半 | -0/0.5 |
平/半 | 0/0.5 |
半球 | 0.5 |
Option Explicit
Function plant2Num(iStr As String) As String
Dim iBn, iBq, iBb, iBf
Dim n As Long, q As Long, b As Double, f As String
Dim iStrArr
Dim jStr, iEnStr As String
Dim i As Long
iBn = Split("平一二三四五六七八九两 01234567892")
iBq = Split("球 1")
iBb = Split("半 0.5")
iBf = Split("* -")
iStr = Replace(iStr, "手", "")
iStrArr = Split(iStr, "/")
For Each jStr In iStrArr
f = ""
q = 0
n = 1
For i = 1 To Len(jStr)
If CLng(InStr(1, iBn(0), Mid(jStr, i, 1))) > 0 Then n = CLng(Mid(iBn(1), CLng(InStr(1, iBn(0), Mid(jStr, i, 1))), 1)): q = 1: GoTo continue
If CLng(InStr(1, iBq(0), Mid(jStr, i, 1))) > 0 Then q = CLng(InStr(1, iBq(0), Mid(jStr, i, 1))): GoTo continue
If CLng(InStr(1, iBb(0), Mid(jStr, i, 1))) > 0 Then b = CSng(iBb(1)): Exit For
If CLng(InStr(1, iBf(0), Mid(jStr, i, 1))) > 0 Then f = iBf(1)
continue:
Next i
iEnStr = iEnStr & f & (n * q + b) & "/"
Next jStr
plant2Num = Left(iEnStr, Len(iEnStr) - 1)
End Function