'在VB6 中新建一个工程,放入两个label 'label1.caption="H@5*6 @1@5 B¥3 @9 S#9#8#8¥3`3`3`5#9¥1 L@9#6*7#9@9*7¥3 L¥3@9*8#6¥3*8?" 'label3.caption="" 'label3.caption存放转换后的字符串。] '把下列代码拷贝到代码窗口,运行即可。 Option ExplicitPrivate Sub Form_Activate() Dim sSou As String Dim sDes As String Dim sTem As String Dim sTem2 As String sSou = Label1.Caption & " "Dim I As Long While InStr(sSou, " ") <> 0 sTem2 = Left(sSou, InStr(sSou, " ") - 1) sTem = exchange(sTem2) sSou = Right(sSou, Len(sSou) - InStr(sSou, " ")) Label3.Caption = Label3.Caption + sTem + " " Wend End Sub Private Function exchange(ByVal str As String) As String Dim I As Long Dim temp As String 'MsgBox Len(str) If Len(str) Mod 2 <> 0 Then exchange = Left(str, 1) For I = 2 To Len(str) Step 2 temp = Mid(str, I, 2) exchange = exchange + changetable(temp) Next I Else If Right(str, 1) = "?" Then exchange = exchange + Left(str, 1) For I = 2 To Len(str) - 1 Step 2 temp = Mid(str, I, 2) exchange = exchange + changetable(temp) Next I exchange = exchange + "?" Else For I = 1 To Len(str) Step 2 temp = Mid(str, I, 2) exchange = exchange + changetable(temp) Next I End If
End IfEnd Function Private Function changetable(ByVal str As String) As StringSelect Case str Case "@5" changetable = "o" Case "*6" changetable = "w" Case "@1" changetable = "t" Case "¥3" changetable = "e" Case "@9" changetable = "a" Case "#9" changetable = "u" Case "#8" changetable = "c" Case "`3" changetable = "s" Case "`5" changetable = "f" Case "¥1" changetable = "l" Case "#6" changetable = "n" Case "*7" changetable = "g" Case "*8" changetable = "r" End Select End Function
因为每个字母对应的是二个字符,所以可以用以下方法转换 Dim i As Long, kMove As Long Dim wordStr As String, oneStr As String, Result As String, KRes As String i = 0 kMove = 1 While string1 <> "" i = InStr(0, string1, " ") wordStr = Left(string1, i - 1) oneStr = Left(wordStr, 2) While oneStr <> "" If Asc(oneStr) > 65 And Asc(oneStr) < 90 Then Result = Chr(Asc(oneStr)) oneStr = Mid(oneStr, 2) Else Result = Translation(oneStr) oneStr = Mid(oneStr, 3) End If KRes = KRes + Result Wend KRes = KRes + " " string1 = Mid(string1, i + 1) Wend KRes = KRes + "." 'KRes就是结果了。 Private Function Translation(ByVal valStr As String) Dim str As String Select Case valStr Case "@5" str = "o" Case "*6" str = "w" Case "@9" str = "a" Case "#8" str = "u" '...以此类推 End Select End Function
算法还没有搞清楚就编程啦!程序replace不就得啦!还要写这么多代码吗?
楼上说的有道理,不过毕竟那些代码也比较实用。况且他的课本显然是本英语教材 (How to Be a Successful Language Learner?好像是大学英语一的第一课)所以数字毕竟是少数。
非常感谢大家的热情!我再提供一些说明:他的文件是文本格式的。不仅英文加了密。DBF文件中的中文也作了变换。 H@5*6 @1@5 B¥3 @9 S#9#8#8¥3`3`3`5#9¥1 L@9#6*7#9@9*7¥3 L¥3@9*8#6¥3*8? “L¥3@9*8#6#0#6*7 @9 ¥1@9#6*7#9@9*7¥3 #0`3 ¥3@9`3¥0. E@0¥3#6 @9 #8@2#0¥1`6 #8@9#6 `6@5 @@!” M@5`3@1 @9`6#9¥1@1`3 *6@2@5 @9*8¥3 ¥1¥3@9*8#6#0#6*7 @9 `3¥3#8@5#6`6 ¥1@9#6*7#9@9*7¥3 *6@5#9¥1`6 `6#0`3@9*7*8¥3¥3 *6@@@2 ** `3@1@9@1¥3^4¥3#6@1. F@5*8 ##^4, ¥1¥3@9*8#6#0#6*7 @9 ¥1@9#6*7#9@9*7¥3 #0`3 @9 @0¥3*8¥0 `6#0`5`5#0#8#9¥1@1 @1@9`3*5. T@2¥3¥0 #6¥3¥3`6 @2#9#6`6*8¥3`6`3 @5`5 @2@5#9*8`3 @5`5 `3@1#9`6¥0 @9#6`6 ^7*8@9#8@1#0#8¥3, @9#6`6 ¥3@0¥3#6 ** *6#0¥1¥1 #6@5 *7#9@9*8@9#6@1¥3¥3 `3#9#8#8¥3`3`3 `` ¥3@0¥3*8¥0 @9`6#9¥1@1 ¥1@9#6*7#9@9*7¥3 ¥1¥3@9*8#6¥3*8.原文:How To Be a Successful Language Learner? "Learning a language is easy. Even a child can do it!" Most adults who are learning a second language would disagree with this statement. For them,learning a language is a very difficult task. They need hundreds of hours of study and practice, and even this will no guarantee success for every adult language learner.
w--*6
e--¥3
a-@9
u--#9
c--#8
s--`3
f--`5
u--#9
l--¥1
n=#6
g=*7
我想问一下RainBows(大毛),原文中有没有数字,他们是否也被编码了?
因为这明显是一种二维编码方式,横坐标是数字,纵坐标是符号,根据出现的解码方式来看,至少是5×7(5个符号@#$^*,7个数字1356789),大写字母没有编码,所以对于小写字母的编码方式多出了35-26=9个,考虑到v有可能没有编码的话,这个空间正好是给0-9十个数字留的。
有多几个编码后的句子吗?没有原文也没有问题!
'label1.caption="H@5*6 @1@5 B¥3 @9 S#9#8#8¥3`3`3`5#9¥1 L@9#6*7#9@9*7¥3 L¥3@9*8#6¥3*8?"
'label3.caption=""
'label3.caption存放转换后的字符串。]
'把下列代码拷贝到代码窗口,运行即可。
Option ExplicitPrivate Sub Form_Activate()
Dim sSou As String
Dim sDes As String
Dim sTem As String
Dim sTem2 As String
sSou = Label1.Caption & " "Dim I As Long
While InStr(sSou, " ") <> 0
sTem2 = Left(sSou, InStr(sSou, " ") - 1)
sTem = exchange(sTem2)
sSou = Right(sSou, Len(sSou) - InStr(sSou, " "))
Label3.Caption = Label3.Caption + sTem + " "
Wend
End Sub
Private Function exchange(ByVal str As String) As String
Dim I As Long
Dim temp As String
'MsgBox Len(str)
If Len(str) Mod 2 <> 0 Then
exchange = Left(str, 1)
For I = 2 To Len(str) Step 2
temp = Mid(str, I, 2)
exchange = exchange + changetable(temp)
Next I
Else
If Right(str, 1) = "?" Then
exchange = exchange + Left(str, 1)
For I = 2 To Len(str) - 1 Step 2
temp = Mid(str, I, 2)
exchange = exchange + changetable(temp)
Next I
exchange = exchange + "?"
Else
For I = 1 To Len(str) Step 2
temp = Mid(str, I, 2)
exchange = exchange + changetable(temp)
Next I
End If
End IfEnd Function
Private Function changetable(ByVal str As String) As StringSelect Case str
Case "@5"
changetable = "o"
Case "*6"
changetable = "w"
Case "@1"
changetable = "t"
Case "¥3"
changetable = "e"
Case "@9"
changetable = "a"
Case "#9"
changetable = "u"
Case "#8"
changetable = "c"
Case "`3"
changetable = "s"
Case "`5"
changetable = "f"
Case "¥1"
changetable = "l"
Case "#6"
changetable = "n"
Case "*7"
changetable = "g"
Case "*8"
changetable = "r"
End Select
End Function
Dim i As Long, kMove As Long
Dim wordStr As String, oneStr As String, Result As String, KRes As String
i = 0
kMove = 1
While string1 <> ""
i = InStr(0, string1, " ")
wordStr = Left(string1, i - 1)
oneStr = Left(wordStr, 2)
While oneStr <> ""
If Asc(oneStr) > 65 And Asc(oneStr) < 90 Then
Result = Chr(Asc(oneStr))
oneStr = Mid(oneStr, 2)
Else
Result = Translation(oneStr)
oneStr = Mid(oneStr, 3)
End If
KRes = KRes + Result
Wend
KRes = KRes + " "
string1 = Mid(string1, i + 1)
Wend
KRes = KRes + "." 'KRes就是结果了。
Private Function Translation(ByVal valStr As String)
Dim str As String
Select Case valStr
Case "@5"
str = "o"
Case "*6"
str = "w"
Case "@9"
str = "a"
Case "#8"
str = "u"
'...以此类推
End Select
End Function
(How to Be a Successful Language Learner?好像是大学英语一的第一课)所以数字毕竟是少数。
“L¥3@9*8#6#0#6*7 @9 ¥1@9#6*7#9@9*7¥3 #0`3 ¥3@9`3¥0. E@0¥3#6 @9 #8@2#0¥1`6 #8@9#6 `6@5 @@!”
M@5`3@1 @9`6#9¥1@1`3 *6@2@5 @9*8¥3 ¥1¥3@9*8#6#0#6*7 @9 `3¥3#8@5#6`6 ¥1@9#6*7#9@9*7¥3 *6@5#9¥1`6 `6#0`3@9*7*8¥3¥3 *6@@@2 ** `3@1@9@1¥3^4¥3#6@1. F@5*8 ##^4, ¥1¥3@9*8#6#0#6*7 @9 ¥1@9#6*7#9@9*7¥3 #0`3 @9 @0¥3*8¥0 `6#0`5`5#0#8#9¥1@1 @1@9`3*5. T@2¥3¥0 #6¥3¥3`6 @2#9#6`6*8¥3`6`3 @5`5 @2@5#9*8`3 @5`5 `3@1#9`6¥0 @9#6`6 ^7*8@9#8@1#0#8¥3, @9#6`6 ¥3@0¥3#6 ** *6#0¥1¥1 #6@5 *7#9@9*8@9#6@1¥3¥3 `3#9#8#8¥3`3`3 `` ¥3@0¥3*8¥0 @9`6#9¥1@1 ¥1@9#6*7#9@9*7¥3 ¥1¥3@9*8#6¥3*8.原文:How To Be a Successful Language Learner?
"Learning a language is easy. Even a child can do it!"
Most adults who are learning a second language would disagree with this statement. For them,learning a language is a very difficult task. They need hundreds of hours of study and practice, and even this will no guarantee success for every adult language learner.