strs = "sadafs"
For i = 0 to Len(strs)
For j = i+1 to Len(strs)
If Mid(strs, i, 1) = Mid(strs, j, 1) Then
strs= Mid(strs, 0, i-1)& Mid(strs, i+1, Len(strs))
End If
next
next
msgbox str2
例如:“sadafs”结果“df”
请问下我上面错在哪里了,以及如果错了正确应该怎样写呢!
感谢!
关键用 这里用mid方法,提示错误!应该怎样用?
VBS 去掉字符串中的重复项
答案:5 悬赏:60 手机版
解决时间 2021-02-19 20:56
- 提问者网友:不要迷恋哥
- 2021-02-19 07:36
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-02-19 08:41
<script language="vbScript">
s = " sadafs"
tmp=" "
for i = 1 to len(s)
c=mid(s,i,1)
tmp =tmp & c
if instr(tmp,c)>0 then s=replace(s,c,"")
next
msgbox tmp
</script>
s = " sadafs"
tmp=" "
for i = 1 to len(s)
c=mid(s,i,1)
tmp =tmp & c
if instr(tmp,c)>0 then s=replace(s,c,"")
next
msgbox tmp
</script>
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-02-19 12:06
程序思维已经错了。
最好的方法是统计每个字符在整个字符串中出现的次数,如果为1次就显示,否则就不显示,这样不就可以了。
- 2楼网友:鱼芗
- 2021-02-19 11:07
兄弟,你这算法确实不妥.不过我也不知道更好的办法,呵...
----------
strs = "sadafs"
n=len(strs)
str=strs
For i = 1 to n
for j = 1+1 to n
If Mid(strs, i, 1) = Mid(strs, j, 1) and i <> j Then str=Replace(str,Mid(strs, i, 1),"")
next
next
msgbox str
----------
注:
你代码中的Mid取变量位数是从0位开始取起的,所以出错.Mid的取位数从1开始的.
第一个For也应该从1开始.你这么两个For套用,始终会出来i=j,所以没重复的字符也会被误认为重复的.
- 3楼网友:青灯有味
- 2021-02-19 09:59
你的程序有两处错误:
1.mid函数中,字符串的起始下标是1而不是0
2.你的算法有误,你一边比较一边修改了字符串,使后面得到的子串与预期不同。
下面的代码供你参考。
strs = "sadafs"
Do
l = Len(strs)
a = Mid(strs, 1, 1)
strs = Replace(strs, a, "")
If (l - Len(strs)) = 1 Then s = s & a
Loop While l > 0
MsgBox s
- 4楼网友:笑迎怀羞
- 2021-02-19 09:33
mid中,起始下标是1而不是0
你的算法有误,你一边比较一边修改了字符串,使后面得到的子串与预期不同。
我修改的是:
Dim str,temp
str = "sadafs"
For i = 2 to Len(str)
if mid(str,1,1) = mid(str,i,1) then
For j = 1 to Len(str)
if mid(str,j,1) <> mid(str,1,1) then
temp = temp & mid(str,j,1)
end if
next
end if
str = temp
next
msgbox str
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯