以下循环语句还能精炼吗?
主要功能是进行两次合并重复字符串
这是昨天求助后我进行的修改
<%
Dim a:a="6,4,1,4,0,3,1"
Dim s:s = "1|2|3,1,4|5|7,1|2|4|6,5|6|7|4,1|2|3,4|5|8"
Dim b,c,d,arr,list
arr=Split(a,",")
d=Split(s,",")
list="|"
For i=0 To UBound(arr)
If instr(list,"|"&arr(i)&"|")=0 Then
temp=Split(a,arr(i))
If UBound(temp)>1 Then
sole=sole& ","&arr(i)
For j=0 to ubound(arr)
if arr(i)=arr(j) and j>i then
b=MoveR("|"&d(i)&"|"&d(j))
c=c&","&b
end if
next
Else
c=c&","&d(i)
sole=sole&","&arr(i)
End If
list=list&arr(i)&"|"
End If
Next
response.write Mid(sole,2)&"<br/>"
response.write Replace(Mid(c,2),",|",",")&"<br/>"
Function MoveR(Rstr)
Dim i,SpStr
SpStr = Split(Rstr,"|")
For i = 0 To Ubound(Spstr)
If I = 0 then
MoveR = MoveR & SpStr(i) & "|"
Else
If instr(MoveR,SpStr(i))=0 and i=Ubound(Spstr) Then
MoveR = MoveR & SpStr(i)
Elseif instr(MoveR,SpStr(i))=0 Then
MoveR = MoveR & SpStr(i) & "|"
End If
End If
Next
End Function
%>
<%
Function remove_duplicate(s_array,sign)
Dim list,arr,k
arr=Split(s_array,sign)
For k=0 To UBound(arr)
If InStr(list,arr(k))=0 Then
list=list&sign&arr(k)
End If
Next
remove_duplicate=Mid(list,2)
End Function
'前提:所有数字不会大于10,否则需要加前后缀区别
Dim i,n,a_arr,t_arr,s_arr,s_temp,temp_arr
Dim a:a="6,4,1,4,0,3,1"
Dim s:s = "1
[解决办法]
2
[解决办法]
3,1,4
[解决办法]
5
[解决办法]
7,1
[解决办法]
2
[解决办法]
4
[解决办法]
6,5
[解决办法]
6
[解决办法]
7
[解决办法]
4,1
[解决办法]
2
[解决办法]
3,4
[解决办法]
5
[解决办法]
8"
a_arr=Split(a,",")
t_arr=Split(remove_duplicate(a,","),",") '已经去重的新数组
s_arr=Split(s,",")
For i=0 To UBound(t_arr)
s_temp=""
For n=0 To UBound(a_arr)
If t_arr(i)=a_arr(n) Then s_temp=s_temp&"
[解决办法]
"&s_arr(n)
'直接从a中提取相同数所在的位置,对应去s里提取相应数组
Next
temp_arr=temp_arr&","&remove_duplicate(Mid(s_temp,2),"
[解决办法]
") '去重后拼合
Next
Response.write Join(t_arr,",")&"<br />"
Response.write Mid(temp_arr,2)
%>