| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1006 人关注过本帖
标题:VB6替换字符串中的字符
只看楼主 加入收藏
alickluo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2023-1-29
结帖率:50%
收藏
已结贴  问题点数:4 回复次数:6 
VB6替换字符串中的字符
各位老师:

Text1中有内容111#222#333##444#555#666#

如何将其中的第1个#替换为#1,第2个#替换为#2,第3个#替换为#3......

谢谢!
搜索更多相关主题的帖子: 替换 VB6 字符串 字符 内容 
2023-03-14 11:17
alickluo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2023-1-29
收藏
得分:0 
改一下,更直观一些吧

Text1中有内容111#222#333##444#555#666#

如何将其中的第1个#替换为#A,第2个#替换为#B,第3个#替换为#C......

谢谢!
2023-03-14 12:35
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:2 
Dim  ak(), bk()
Text1=111#222#333##444#555#666#
Text2="A B C "
s103 = Text1
s105 = Split(s103, "#")
   j1 = UBound(s105)
s104 = Text2
s205 = Split(s104, " ")
   j2 = UBound(s205)
n1 = 0
For k = 0 To j1
       ReDim Preserve ak(0 To n1)
      ak(n1) = s105(n1)
n1 = n1 + 1
    Next
 n2 = 0
 For k = 0 To j2
        ReDim Preserve bk(0 To n2)
       bk(n2) = s205(n2)
n2 = n2 + 1
    Next

For k = 0 To j2
        
       Text4 ="#" & bk(k)

    Next
2023-03-14 14:15
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:2 
只会替换前26个,超过部分不再替换
算法原理,分解后,#后面必定在另一个元素,在元素前面 增加字母 ,最后再拼回来。

程序代码:
Option Explicit

Private Sub Command1_Click()
Dim i As Long, j As Long
Dim fj() As String
Const SG = 65           '字母 A 的ASCII 码,如果起始字符不是A,这里写超始字符的ASCII码
Const FG = "#"          '分隔符
Const TC = 26           '替换最大个数

fj = Split(Text1.Text, FG)              '按分隔符 分解字符串到数组
j = UBound(fj)                          '取元素个数
If j > TC Then j = TC                   '最多替换前多个个,超过部分不再替换了,防止出错
For i = 1 To j                          '0号元素不用管,从1号元素到最后一个元素 或 替换的最大个数
    fj(i) = Chr(SG + i - 1) & fj(i)     '前导字母,根据元素顺序后顺序
Next i
Text2.Text = Join(fj, FG)               '再拼接为字符串
End Sub

Private Sub Form_Load()
    Text1.Text = "111#222#333##444#555#666#"    
End Sub


授人于鱼,不如授人于渔
早已停用QQ了
2023-03-14 17:41
阳光上的桥
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:38
帖 子:129
专家分:772
注 册:2023-1-12
收藏
得分:2 
以上回答都很秒,我来画蛇添足

一是简单总结,固定内容替换为变化内容,套路就是Split拆分为数组,然后按照规律对数组子项添加内容,最后Join得到内容;

二是添加26以上的数字转换为字母代码

程序代码:
Function bm(ByVal x As Long) As String
    Dim s As String
    s = ""
    While x > 0
        s = Chr(64 + x Mod 26) & s
        x = x \ 26
    Wend
    bm = s
End Function

 1            A
 21           U
 41           AO
 61           BI
2023-03-15 15:44
alickluo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2023-1-29
收藏
得分:0 
感谢各位老师的精彩回答
2023-03-15 22:58
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
程序代码:
s = "111#222#333##444#555#666#"
t = Split(s, "#")
For i = 1 To UBound(t)
t(i) = Chr(i + 64) & t(i)
Next
s2 = Join(t, "#")
2023-03-17 14:42
快速回复:VB6替换字符串中的字符
数据加载中...
 
   



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

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