对输入的英文进行加密时,规则是将单词的首位字母互换,还有偶数长的单词中间两个字母互换,奇数长的单词中间的字母按字母表位置后移两位,如study→Ytwds,Taylor→Ralyot应该怎么做啊?求大神解!部分是这样的
Private Sub Command1_Click()
Dim x As String, y As String, m1 As String * 1, m2 As String * 1
Dim n As Integer
n = Len(Text1)
x = LCase(Text1)
y = Text1.Text
If n Mod 2 = 0 Then
m1 = Mid(y, n / 2, 1)
m2 = Mid(y, n / 2 + 1, 1)
后面要怎么做呢?急求~~~~~
VB中首尾字母怎么调换?
答案:5 悬赏:30
解决时间 2021-11-08 07:10
- 提问者网友:房东的猫
- 2021-11-07 22:50
最佳答案
- 二级知识专家网友:一池湖水
- 2021-11-07 23:36
VB中首尾字母调换,只需要取首字母和尾字母再取中间的所有字母,再重新组合就可以。代码如下:
Private Sub Command1_Click()
Dim x As String, a As String, b As String, c As String
x = Text1.Text
a = Left(x, 1) '取首字母
b = Right(x, 1) '取尾字母
c = Mid(x, 2, Len(x) - 2) '取中间的字母
x = b & c & a '重新组合合并
MsgBox x
End Sub
Private Sub Command1_Click()
Dim x As String, a As String, b As String, c As String
x = Text1.Text
a = Left(x, 1) '取首字母
b = Right(x, 1) '取尾字母
c = Mid(x, 2, Len(x) - 2) '取中间的字母
x = b & c & a '重新组合合并
MsgBox x
End Sub
全部回答
- 1楼网友:24K纯糖
- 2021-11-08 03:51
Private Sub Command1_Click()
chg (Text1.Text)
chg (Text2.Text)
End Sub
Sub chg(s As String)
Dim n As Integer, i As Integer, t As String * 1
n = Len(s)
t = Mid(s, 1, 1)
Mid(s, 1, 1) = UCase(Mid(s, n, 1))
Mid(s, n, 1) = LCase(t)
If n Mod 2 = 0 Then
i = 2: n = n - 1
Do While i < n
t = Mid(s, i, 1)
Mid(s, i, 1) = Mid(s, n, 1)
Mid(s, n, 1) = t
i = i + 1: n = n - 1
Loop
Else
For i = 2 To n - 1
Mid(s, i, 1) = Chr(Asc(Mid(s, i, 1)) + 2)
Next i
End If
Print s
End Sub
- 2楼网友:傲娇菇凉
- 2021-11-08 02:48
你不会vb文本函数操作吗?right left len asc chr本程序需要的函数
- 3楼网友:懂得ㄋ、沉默
- 2021-11-08 02:42
你的中间两位 交换 的 说法 有些 歧义
如果单词有8位该怎么办?
我不太理解。
我这边 大致 写了一下。 有些地方需要你自己修改了
'study→Ytwds,Taylor→Ralyot
Sub t()
Const str1 As String = "study"
Const str2 As String = "Ralyot"
Debug.Print doChange(str1)
Debug.Print doChange(str2)
End Sub
Function doChange(inWord As String)
Dim lLen As Long
lLen = Len(inWord)
Dim lHalfLen As Long
Dim lHalfLenPoint As Long
lHalfLenPoint = (lLen + lLen Mod 2) / 2
lHalfLen = (lLen - lLen Mod 2) / 2
Dim result_Zen As String
Dim result_Hou As String
For i = 1 To lHalfLen
Dim c_Zen As String
Dim c_Hou As String
c_Zen = Mid(inWord, i, 1)
c_Hou = Mid(inWord, Len(inWord) - i + 1, 1)
‘从这里开始要你自己按照实际需要修改了
If i Mod 2 = 1 Then
result_Zen = result_Zen & c_Hou
result_Hou = c_Zen & result_Hou
Else
result_Zen = result_Zen & c_Zen
result_Hou = c_Hou & result_Hou
End If
Next
If lHalfLenPoint = lHalfLen Then
doChange = result_Zen & result_Hou
Else
doChange = result_Zen & doAdd2(Mid(inWord, lHalfLenPoint, 1)) & result_Hou
End If
‘到这里为止要你自己按照实际需要修改了
End Function
Function doAdd2(inWord As String)
Dim c As Integer
c = Asc(inWord)
c = c + 2
If (c > 90 And c < 93) Or c > 122 Then
c = c - 26
End If
doAdd2 = Chr(c)
End Function
- 4楼网友:星痕之殇
- 2021-11-08 01:10
mid 可以取任意长度的字符出来..4个变量
a= 单词第一个字母
b=单词中间的所有字母
c=单词的最后一个字母
d=c & b & a
最后d单词不就是你要的首尾互换的效果么? 上面的 abc三个变量赋值过程可以直接省略
d= mid("study",len("study")-1,1) & mid("study",2,len("study")-1) & mid("study",1,1)
至于判断单词的奇偶数 len 就能处理判断了..
奇数单词顺延的话.你可以使用ascii码就对了..只是你需要判断当字母是Z时,应该替换成什么..其他字母的ASCII码+1 得到的字母是什么
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯