| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1212 人关注过本帖
标题:求助:调换一组字符串中字符的顺序
只看楼主 加入收藏
桃源书生
Rank: 1
等 级:新手上路
帖 子:99
专家分:3
注 册:2006-7-3
结帖率:33.33%
收藏
 问题点数:0 回复次数:4 
求助:调换一组字符串中字符的顺序
随便输入一组字符串,比如说是:abcde,我想把这组字符串中的第1个字符和第3个字符调换一下,形成新的新符串:cbade。请问如何实现?谢谢!
搜索更多相关主题的帖子: 字符 顺序 调换 
2008-10-21 15:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
Public Function 对换字符(cs As String, wz1 As Long, wz2 As Long) As String
Dim j() As Byte
Dim o As Long
Dim k As Byte
Dim m1 As Long, m2 As Long

m1 = wz1 - 1        '因为位置原点不同,这里进行修正
m2 = wz2 - 1
j = StrConv(cs, vbFromUnicode)
o = UBound(j)

If m1 < o And m1 >= 0 And m2 >= 0 And m2 < o And m1 <> m2 Then
    k = j(m1)
    j(m1) = j(m2)
    j(m2) = k
End If

对换字符 = StrConv(j, vbUnicode)
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2008-10-21 16:13
桃源书生
Rank: 1
等 级:新手上路
帖 子:99
专家分:3
注 册:2006-7-3
收藏
得分:0 
万分感谢!
2008-10-21 16:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
上面仅支持英文字符串,如果字符串里包含中文,有可能出现不可预料的错误,造成乱码.
如果是中文,就要采用截字符串的方法来用.

Public Function 对换字符(cs As String, wz1 As Long, wz2 As Long) As String
Dim i As Long
If wz1 > wz2 Then
    i = wz1
    wz1 = wz2
    wz2 = i
End If
对换字符 = Mid(cs, 1, wz1 - 1) & Mid(cs, wz2, 1) & Mid(cs, wz1 + 1, wz2 - wz1 - 1) & Mid(cs, wz1, 1) & Mid(cs, wz2 + 1)

End Function

授人于鱼,不如授人于渔
早已停用QQ了
2008-10-21 17:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
速度分析,

第二种方法,需要使用 mid 五次,需要调用 DLL 5次,
第一种方法,需要使用 StrConv 二次,也就需要调用 DLL 2次.

VB运行效率低下,主要原因就是开销在调用DLL上面.VB内置函数,绝大部分都是 DLL 里的
这个DLL, 是指VB的运行库.
其它运算,与其它语言没有多大区别
收到的鲜花
  • multiple19022008-10-21 22:40 送鲜花  18朵   附言:精彩的总结

授人于鱼,不如授人于渔
早已停用QQ了
2008-10-21 17:38
快速回复:求助:调换一组字符串中字符的顺序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045972 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved