VB中如何实现字符串与字符串的转换
有两个Textbox控件,其中一个输入字符串,另一个输出结果。凡是含数字的都减1,英文的上一位,含文字“一二三四……”的都转成“壹贰叁肆……”,如“三z5”转成“叁a4”...
有两个Textbox控件,其中一个输入字符串,另一个输出结果。
凡是含数字的都减1,英文的上一位,含文字“一二三四……”的都转成“壹贰叁肆……”,如“三z5”转成“叁a4”等等。
进一步推广请高手编个通用函数,实现某字符串中 特定字符 向 特定字符 的转换(转换是一对一的、明确的,不一定有数学规则的)。
谢谢! 展开
凡是含数字的都减1,英文的上一位,含文字“一二三四……”的都转成“壹贰叁肆……”,如“三z5”转成“叁a4”等等。
进一步推广请高手编个通用函数,实现某字符串中 特定字符 向 特定字符 的转换(转换是一对一的、明确的,不一定有数学规则的)。
谢谢! 展开
5个回答
2013-11-30
展开全部
我是菜鸟,在vb中用winsock控件编写一个代理程序遇到二进制数据包与字符串转换的问题,我的目的是要将二进制数据包转换成字符串以便查看并且修改数据包内容,然后又将修改了的数据包内容转换成二进制数据包转发给客户端程序。问题过程如下:
Private Sub Server_DataArrival(ByVal bytesTotal As Long)
Dim ServerToClient As String ‘这里我将数据包定义为String数据类型,想直接查看修改数据包内容
Server.GetData ServerToClient
Client.SendData ServerToClient
End Sub
运行以上过程客户端程序不响应,不与我的代理程序中的Client通讯,于是我将ServerToClient定义为Byte数据类型
Private Sub Server_DataArrival(ByVal bytesTotal As Long)
Dim ServerToClient() As Byte ‘这里我将数据包定义为Byte数据类型
Server.GetData ServerToClient
Client.SendData ServerToClient
End Sub
这样客户端程序就响应了,能与我的代理程序中的Client通讯了,这说明客户端程序与远程服务器通讯是不支持String数据类型的。那么我就必须要将定义为Byte数据类型的数据包转换成string数据类型以便查看并且修改数据包内容,我用如下代码转换成string数据类型:
s$ = StrConv(ServerToClient(), vbUnicode)
的确我看到了数据包的内容,然后我将数据包的内容修改后用ServerToClient() = StrConv(s$, vbFromUnicode)转换成Byte数据类型转发给客户端程序,问题就在这儿:客户端程序不响应了,不与我的代理程序通讯了!?
我做了这样的尝试,不修改数据包的内容用ServerToClient() = StrConv(s$, vbFromUnicode)转换成Byte数据类型转发给客户端程序,客户端程序还是不响应?!
各位大虾,我的问题出在哪儿?用什么方法能将string数据类型转换成Byte数据类型的数据包与客户端程序通讯?望不吝赐教!
Private Sub Server_DataArrival(ByVal bytesTotal As Long)
Dim ServerToClient As String ‘这里我将数据包定义为String数据类型,想直接查看修改数据包内容
Server.GetData ServerToClient
Client.SendData ServerToClient
End Sub
运行以上过程客户端程序不响应,不与我的代理程序中的Client通讯,于是我将ServerToClient定义为Byte数据类型
Private Sub Server_DataArrival(ByVal bytesTotal As Long)
Dim ServerToClient() As Byte ‘这里我将数据包定义为Byte数据类型
Server.GetData ServerToClient
Client.SendData ServerToClient
End Sub
这样客户端程序就响应了,能与我的代理程序中的Client通讯了,这说明客户端程序与远程服务器通讯是不支持String数据类型的。那么我就必须要将定义为Byte数据类型的数据包转换成string数据类型以便查看并且修改数据包内容,我用如下代码转换成string数据类型:
s$ = StrConv(ServerToClient(), vbUnicode)
的确我看到了数据包的内容,然后我将数据包的内容修改后用ServerToClient() = StrConv(s$, vbFromUnicode)转换成Byte数据类型转发给客户端程序,问题就在这儿:客户端程序不响应了,不与我的代理程序通讯了!?
我做了这样的尝试,不修改数据包的内容用ServerToClient() = StrConv(s$, vbFromUnicode)转换成Byte数据类型转发给客户端程序,客户端程序还是不响应?!
各位大虾,我的问题出在哪儿?用什么方法能将string数据类型转换成Byte数据类型的数据包与客户端程序通讯?望不吝赐教!
展开全部
可以自定义个函数,如Cobj( string str) ,
function Cobj( str as String) as CString '返回字符串对象
dim cstr as new CString
cstr=str
set Cobj=cstr
end if
CString 自己定义的类
成员只一条:
Public Value as String ‘从工具\过程属性菜单中 把value设置为默认属性
function Cobj( str as String) as CString '返回字符串对象
dim cstr as new CString
cstr=str
set Cobj=cstr
end if
CString 自己定义的类
成员只一条:
Public Value as String ‘从工具\过程属性菜单中 把value设置为默认属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-30
展开全部
直接写了,没有调试,大概就这样子
str1=text1.text
str2=""
for i=1 to len(str1)
str=mid(str1,i,1)
select case str
case "一"
str2 = str2 & "壹"
...二到九省略
default
str2 = str2 & str
end select
if str >"0" and str < "9" then
if str="0" then
str2 = str2 & 9
else
str2=str2 & chr(asc(str)-1)
end if
end if
英文跟数字一样。
text2.text=str2
str1=text1.text
str2=""
for i=1 to len(str1)
str=mid(str1,i,1)
select case str
case "一"
str2 = str2 & "壹"
...二到九省略
default
str2 = str2 & str
end select
if str >"0" and str < "9" then
if str="0" then
str2 = str2 & 9
else
str2=str2 & chr(asc(str)-1)
end if
end if
英文跟数字一样。
text2.text=str2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-30
展开全部
写思想:
1.读取输入的字符串
2.用FOR循环遍历字符串
3.是数字的直接减1,是英文的用CHR()转换为ASCII码后减1,是"一,二..."用selete..case语句
1.读取输入的字符串
2.用FOR循环遍历字符串
3.是数字的直接减1,是英文的用CHR()转换为ASCII码后减1,是"一,二..."用selete..case语句
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是简易的加密解密的算法了,全部转换成ASCII码用加减法算好再还原吧。如有限几个字符,可以用直接赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询