📄 clsjpworddeal.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "JPWordDeal"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Private strWord As String
Private enmType As EType
Private Const KEY_A = ""
Public Enum EType
etNoun 'ming ci
etAdjective 'xing rong ci
etVerb1 'dong ci
etVerb2
etVerb3Ka
etVerb3Sa
etAdVerb 'xing rong dong ci
etUnkown 'wei zhi
End Enum
Private Type T_KeyWord
strKeyA As String
strKeyI As String
strKeyU As String
strKeyU2 As String
strKeyU2MaSi As String
strKeyU2TE As String
strKeyU2TA As String
strKeyU2NaYi As String
strKeyU2YiZi As String
strKeyE As String
strKeyO As String
vA As Variant
vI As Variant
vU As Variant
vU2 As Variant
vU2MaSi As Variant
vU2TE As Variant
vU2TA As Variant
vU2NaYi As Variant
vU2YiZi As Variant
vE As Variant
vO As Variant
End Type
Private tkword As T_KeyWord
Private Sub Class_Initialize()
tkword.strKeyA = "偁,偐,偝,偨,側,偼,傑,傗,傜,傢"
tkword.strKeyI = "偄,偒,偟,偪,偵,傂,傒,偄,傝,偄"
tkword.strKeyU = "偆,偔,偡,偮,偸,傆,傓,備,傞,偆"
tkword.strKeyU2 = "偆,偔,偖,偡,偮,偸,傇,傓,傞"
tkword.strKeyU2MaSi = "偄,偒,偓,偟,偪,偵,傃,傒,傝"
tkword.strKeyU2TE = "偭偰,偟偰,偟偱,偟偰,偭偰,傫偱,傫偱,傫偱,偭偰"
tkword.strKeyU2TA = "偭偨,偟偨,偟偩,偟偨,偭偨,傫偩,傫偩,傫偩,偭偨"
tkword.strKeyU2NaYi = "偁,偐,偑,偝,偨,側,偽,傑,傜"
tkword.strKeyU2YiZi = "偍,偙,偛,偦,偲,偺,傏,傕,傠"
tkword.strKeyE = "偊,偗,偣,偰,偹,傊,傔,偊,傟,偊"
tkword.strKeyO = "偍,偙,偦,偲,偺,傎,傕,傛,傠,傪"
tkword.vA = Split(tkword.strKeyA, ",")
tkword.vI = Split(tkword.strKeyI, ",")
tkword.vU = Split(tkword.strKeyU, ",")
tkword.vU2 = Split(tkword.strKeyU2, ",")
tkword.vU2MaSi = Split(tkword.strKeyU2MaSi, ",")
tkword.vU2TE = Split(tkword.strKeyU2TE, ",")
tkword.vU2TA = Split(tkword.strKeyU2TA, ",")
tkword.vU2NaYi = Split(tkword.strKeyU2NaYi, ",")
tkword.vU2YiZi = Split(tkword.strKeyU2YiZi, ",")
tkword.vE = Split(tkword.strKeyE, ",")
tkword.vO = Split(tkword.strKeyO, ",")
End Sub
Public Property Let Word(strUserWord As String)
strUserWord = Trim(strUserWord)
strWord = strUserWord
enmType = etUnkown
If Len(strWord) >= 2 Then
enmType = enmGetWordType(strWord)
End If
End Property
Public Property Get Word() As String
Word = strWord
End Property
'get the word's type
Public Property Get WordType() As EType
WordType = enmType
End Property
'let the word's type
Public Property Let WordType(enmT As EType)
enmType = enmT
End Property
Public Function Result() As String
Dim strTempResult$, strTemp$, strBase$
Dim strKeyMaSi$, strKeyTA$, strKeyTE$, strKeyNaYi$, strKeyYiZi$
If Len(strWord) < 2 Then Exit Function
Select Case enmType
Case etNoun
strTemp = strWord
strTempResult = strTemp & "偱偡" & vbCrLf & _
strTemp & "偱偟偨" & vbCrLf & _
strTemp & "偱偼偁傝傑偣傫" & vbCrLf & _
strTemp & "偱偼偁傝傑偣傫偱偟偨" & vbCrLf & _
"" & vbCrLf & _
strTemp & "偩" & vbCrLf & _
strTemp & "偩偭偨" & vbCrLf & _
strTemp & "偱偼側偄" & vbCrLf & _
strTemp & "偩偼側偄偐偭偨"
Case etAdjective
strTemp = Left(strWord, Len(strWord) - 1)
strTempResult = strWord & "偱偡" & vbCrLf & _
strTemp & "偐偭偨偱偡" & vbCrLf & _
strTemp & "偔側偄偱偡丂丂丂丂偔偁傝傑偣傫" & vbCrLf & _
strTemp & "偔側偐偮偨偱偡丂丂偔偁傝傑偣傫偱偟偨" & vbCrLf & _
"" & vbCrLf & _
strWord & vbCrLf & _
strTemp & "偐偭偨" & vbCrLf & _
strTemp & "偔側偄" & vbCrLf & _
strTemp & "偔側偐偭偨"
Case etVerb1
strBase = Left(strWord, Len(strWord) - 1)
strKeyMaSi = strGetMaSi(Right(strWord, 1))
strKeyTA = strGetU2TA(Right(strWord, 1))
strKeyTE = strGetU2TE(Right(strWord, 1))
strKeyNaYi = strGetU2NaYi(Right(strWord, 1))
strKeyYiZi = strGetU2YiZi(Right(strWord, 1))
strTempResult = strBase & strKeyMaSi & "傑偡" & vbCrLf & _
strBase & strKeyMaSi & "傑偟偨" & vbCrLf & _
strBase & strKeyMaSi & "傑偣傫" & vbCrLf & _
strBase & strKeyMaSi & "傑偣傫偱偟偨" & vbCrLf & _
"" & vbCrLf & _
strWord & vbCrLf & _
strBase & "乕" & vbCrLf & _
strBase & "乕" & vbCrLf & _
strBase & "乕" & vbCrLf & _
"" & vbCrLf & _
strBase & strKeyMaSi & "傑偡" & vbCrLf & _
strBase & strKeyTA & vbCrLf & _
strBase & strKeyTE & vbCrLf & _
strBase & strKeyNaYi & "側偄" & vbCrLf & _
strBase & strKeyYiZi & "偆"
Case etVerb2
strTemp = Left(strWord, Len(strWord) - 1)
strTempResult = strTemp & "傑偡" & vbCrLf & _
strTemp & "傑偟偨" & vbCrLf & _
strTemp & "傑偣傫" & vbCrLf & _
strTemp & "傑偣傫偱偟偨"
Case etVerb3Ka
strTemp = Left(strWord, Len(strWord) - 2)
strTempResult = strTemp & "偟傑偡" & vbCrLf & _
strTemp & "偟傑偟偨" & vbCrLf & _
strTemp & "偟傑偣傫" & vbCrLf & _
strTemp & "偟傑偣傫偱偟偨"
Case etVerb3Sa
strTemp = Left(strWord, Len(strWord) - 2)
strTempResult = strTemp & "棃(偒)傑偡" & vbCrLf & _
strTemp & "棃(偒)傑偟偨" & vbCrLf & _
strTemp & "棃(偒)傑偣傫" & vbCrLf & _
strTemp & "棃(偒)傑偣傫偱偟偨"
Case etAdVerb
strTemp = Left(strWord, Len(strWord) - 1)
strTempResult = strTemp & "偱偡" & vbCrLf & _
strTemp & "偱偟偨" & vbCrLf & _
strTemp & "偱偼偁傝傑偣傫" & vbCrLf & _
strTemp & "偱偼偁傝傑偣傫偱偟偨" & vbCrLf & _
"" & vbCrLf & _
strWord & vbCrLf & _
strWord & "偭偨" & vbCrLf & _
strTemp & "偱偼側偄" & vbCrLf & _
strTemp & "偱偼側偐偭偨"
Case etUnkown
End Select
Result = strTempResult
End Function
'juge u->i
Private Function strGetMaSi(strKey$) As String
Dim i%
For i = 0 To UBound(tkword.vU2)
If tkword.vU2(i) = strKey Then
strGetMaSi = tkword.vU2MaSi(i)
Exit Function
End If
Next
End Function
'juge u->te bian
Private Function strGetU2TE(strKey$) As String
Dim i%
For i = 0 To UBound(tkword.vU2)
If tkword.vU2(i) = strKey Then
strGetU2TE = tkword.vU2TE(i)
Exit Function
End If
Next
End Function
'juge u->ta bian
Private Function strGetU2TA(strKey$) As String
Dim i%
For i = 0 To UBound(tkword.vU2)
If tkword.vU2(i) = strKey Then
strGetU2TA = tkword.vU2TA(i)
Exit Function
End If
Next
End Function
'juge u->nayi bian
Private Function strGetU2NaYi(strKey$) As String
Dim i%
For i = 0 To UBound(tkword.vU2)
If tkword.vU2(i) = strKey Then
strGetU2NaYi = tkword.vU2NaYi(i)
Exit Function
End If
Next
End Function
'juge u->yizi bian
Private Function strGetU2YiZi(strKey$) As String
Dim i%
For i = 0 To UBound(tkword.vU2)
If tkword.vU2(i) = strKey Then
strGetU2YiZi = tkword.vU2YiZi(i)
Exit Function
End If
Next
End Function
'get the type
Private Function enmGetWordType(strTempWord As String) As EType
Dim strR1$, strR2$, strR1_2$
strR1 = Right(strTempWord, 1)
strR1_2 = Right(strTempWord, 2)
strR2 = Mid(strTempWord, Len(strTempWord) - 1, 1)
Select Case strR1
Case "偄"
enmGetWordType = etAdjective
Case "偩"
enmGetWordType = etAdVerb
Case "傞"
Select Case strR1_2
Case "偔傞"
enmGetWordType = etVerb3Ka
Case "棃傞"
enmGetWordType = etVerb3Ka
Case "偡傞"
enmGetWordType = etVerb3Sa
Case Else
If InStr(tkword.strKeyI, strR2) > 0 Or InStr(tkword.strKeyE, strR2) > 0 Then
enmGetWordType = etVerb2
Else
enmGetWordType = etVerb1
End If
End Select
Case Else
If InStr(tkword.strKeyU2, strR1) > 0 Then
enmGetWordType = etVerb1
Else
enmGetWordType = etNoun
End If
End Select
' Form1.rtbResult.SelStart = Len(Form1.rtbResult.Text)
' Form1.rtbResult.SelText = enmGetWordType & vbCrLf
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -