标题: [技术讨论] 【出题】vbs去除重复的字符串 [打印本页]
作者: batman 时间: 2011-5-24 01:31 标题: 【出题】vbs去除重复的字符串
已知字符串“bat home home Net home net Bat net”
要求用vbs去除所有重复的字符串(忽略大小写)
输出为“bat home net”
作者: dahual 时间: 2011-5-24 11:03
路过,花时间写了个来支持。- Dim s '源字符串
- Dim final '最终字符串
- Dim ss,i,j
-
- s="bat home home Net home net Bat net"
- 'For i=0 To 10
- ' s=s & " " & s
- 'Next
- ss=Split(s," ")
- MsgBox "Length: " & Len(s) & vbNewLine & "Count: " & UBound(ss)+1
- ReDim mark(UBound(ss))
- For i=0 To UBound(ss)-1
- If (mark(i)=0) Then
- For j=i+1 To UBound(ss)
- If (mark(j)=0) Then
- If (StrComp(ss(i),ss(j),vbTextCompare)=0) Then
- mark(i)=1:mark(j)=-1
- End If
- End If
- Next
- End if
- Next
- For i=0 To UBound(ss)
- If (mark(i)=1) Then final=final & ss(i) & " "
- Next
- If (Len(final)>0) Then final=Left(final,Len(final)-1)
- Erase mark
-
- MsgBox final
复制代码
作者: dahual 时间: 2011-5-24 11:34
再贴一个利用Dictionary对象Key唯一性的方法。
这个和楼上的代码,大部分时间都花在Split上了;不过目前也没有好的解决办法。- Sub Cut2
- Dim s '源字符串
- Dim final '最终字符串
- Dim ss,i
- Dim dic '字典对象
- Set dic=CreateObject("Scripting.Dictionary")
-
- s="bat home home Net home net Bat net"
- ' For i=0 To 10
- ' s=s & " " & s
- ' Next
- ss=Split(s," ")
- MsgBox "Length: " & Len(s) & vbNewLine & "Count: " & UBound(ss)+1
- For i=0 To UBound(ss)
- If (dic.Exists(LCase(ss(i)))=False) Then dic.Add LCase(ss(i)),ss(i)
- Next
- Erase ss
-
- For Each item In dic.Items
- final=final & item & " "
- Next
- Set dic=Nothing
-
- If (Len(final)>0) Then final=Left(final,Len(final)-1)
-
- MsgBox final
- End Sub
复制代码
作者: batman 时间: 2011-5-24 17:37
用split+instr就可以解决问题了,当然用key更加规范。。。
作者: batman 时间: 2011-5-25 18:32
vbs就这样没人气。。。
my answer- vbstr = "bat home home Net home net Bat net"
- For Each str In Split(vbstr, Chr(32))
- If InStr(LCase(vbout), LCase(str)) = 0 Then vbout = vbout & str & Chr(32)
- Next
- MsgBox LCase(vbout)
复制代码
作者: batman 时间: 2011-5-25 19:49
给上一段和楼上思路一样的批代码帮助大家理解(没有将大写转为小写):- @echo off&setlocal enabledelayedexpansion
- set "str=bat home home Net home net Bat net"
- set "var=@"
- for %%a in (%str%) do if /i "!var:%%a=!" equ "!var!" set "var=!var! %%a"
- echo !var:~2!
- pause>nul
复制代码
作者: wankoilz 时间: 2011-5-26 13:06
5楼的方法真是好,以前写过去重复字符的vbs,但是比起5楼得方法显得太笨拙了,赞一个!
作者: CrLf 时间: 2011-5-26 19:38
5# batman
这不是bat的思路么...
作者: batman 时间: 2011-5-26 20:10
8# zm900612
看6楼。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |