标题:关于字符串的操作
只看楼主
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
结帖率:69.81%
已结贴  问题点数:20 回复次数:8 
关于字符串的操作
几个字符串,以“,”分隔,我已使用temp=Split(字符串, ",")方法 ,但UBound(temp)数量不同,现在想对这些字符串都进行删除第四部分temp(4)和一个“,”,这个语句怎么写?
举例:
字符串1:            1,2,3,4,6,7,8,9,10
字符串2:            00,11,22,33,55,66,77,88,99,00,11,22,33,44,55

字符串1想删除“5”(temp(4))和右边的“,”,变为    1,2,3,5,6,7,8,9,10
字符串2想删除“44”(temp(4))和右边的“,”,变为   00,11,22,33,44,55,66,77,88,99,00,11,22,33,44,55

想要一个通用的语句,可以对这两个字符串同时操作,

求帮助给一段语句。谢谢!

[此贴子已经被作者于2017-8-17 19:06编辑过]

搜索更多相关主题的帖子: 字符串 操作 temp 删除 语句 
2017-08-17 17:34
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
第一步,清掉第4个元素的值
第二步,用 join 连接起来
第三步,替换,把2个, 换成1个,
完成

授人于鱼,不如授人于渔
早已停用QQ了
2017-08-17 18:06
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
求给写段语句,麻烦您了。
2017-08-17 19:14
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:10 
很简单的:
程序代码:
Private Sub Form_Load()
Dim AA1 As String, AA2 As String
AA1 = "1,2,3,4,5,6,7,8,9,10"
AA2 = "00,11,22,33,44,55,66,77,88,99,00,11,22,33,44,55"
AA1 = Replace(AA1, "4,", "")  ' Replace函数是替换字符串中某个字符的函数 
AA2 = Replace(AA2, "44,", "", 1, 1, 1)    '参数1,1,1分别是从第一个字符开始,替换1次,文本方式替换
Text1.Text = AA1
Text2.Text = AA2
End Sub


请不要选我!!!
2017-08-17 19:32
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
不好意思,发现一种特殊情况,例如字符串00,,,,,,,11,22经过您的语句处理后,得出的结果00,11,22,而不是我需要的00,,,,,,11,22(仅去掉中间一个空temp(4)和一个“,”),请问这种情况怎么处理呢?我希望还是能通用处理各种情况。不好意思,麻烦您啦。
2017-08-17 23:11
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
不好意思,发现一种特殊情况,例如字符串00,,,,,,,11,22经过您的语句处理后,得出的结果00,11,22,而不是我需要的00,,,,,,11,22(仅去掉中间一个空temp(4)和一个“,”),请问这种情况怎么处理呢?我希望还是能通用处理各种情况。不好意思,麻烦您啦。
2017-08-18 00:56
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
AA1 = Replace(AA1, "4,", "")   '后面三个参数没有就是默认值:从第一个字符开始替换;全部替换;自适应方式替换。
AA2 = Replace(AA2, ",", "", 4, 1, 1)    '参数分别:AA2是要替换的字符串;","是需要替换的字符;""是被替换的字符;4是从第4个字符开始替换;倒数第二个1是只替换1次,其余不替换;倒数第一个1是文本方式替换。
那么你的 "00,,,,,,,11,22" 字符串经过处理就是 ""00,,,,,,11,22"" 将第四个 “,”替换了,而不是全部。
仔细琢磨一下函数的各参数,不要一有问题就提问,这样对你提高是不利的!反复多运行几次,这个函数对各种情况都是适应的。

[此贴子已经被作者于2017-8-18 07:29编辑过]


请不要选我!!!
2017-08-18 07:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
不能替换,他提问时指定的二个字符串,使用时,又是另外二个字符串,所以不能替换。

提问时,问题没说清楚,要求没说清楚,举例也没说清楚。举例的问题和答案不相符。

所以, ZHRXJR 的回答没错。

---------------------------
程序代码:
Private Sub Command1_Click()
    Text2.Text = 删字串中间(Text1.Text, 4, , "")          '该死,你的分隔符竟然是全角的逗号
End Sub

Public Function 删字串中间(S As String, Wz As Long, Optional DelFG As Boolean = True, Optional FG As String = ",") As String
'传入参数: 待处理的字串,删除的部分序号[,是否一并删除分隔符[,分隔符]]
'删除的部分序号,从1开始计数

Dim fj() As String
Dim i As Long

If InStr(1, S, FG) = 0 Then             '如果不包含分隔符
    删字串中间 = S                      '返回原串
    Exit Function                       '结束函数
End If

fj = Split(S, FG)                       '拆散

If Wz >= 1 And Wz <= UBound(fj) + 1 Then    '位置在允许范围
    fj(Wz - 1) = ""                         '数组序列从0开始,我们的位置从1开始,所以要修正
End If

If DelFG Then                           '如果删后面的分隔符
    For i = Wz To UBound(fj)            '从下一个元素开始循环,到结尾
        fj(i - 1) = fj(i)               '元素向前移一位
    Next i
    ReDim Preserve fj(UBound(fj) - 1)   '重置数组大小,保存数据
End If

删字串中间 = Join(fj, FG)               '连接生成结果

End Function




授人于鱼,不如授人于渔
早已停用QQ了
2017-08-18 09:11
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
在这里拜谢各位的帮助!谢谢!
2017-08-18 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480128-1-1.html




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

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