我在经典asp
中有以下代码 str=Request.Form("txt_str")
“txt_str”是经典asp表单页面中的文本框,我在其中输入以下值:
000-00001
000-00001
000-00001
000-00002
response.write str
因此str将为000-00001 000-00001 000-00001 000-00002
array = split(str,Chr(44))
if str <> "" then
x=empty
for i = 0 to ubound(array)
if array(i) <> "" then
array_2 = split(array(i),chr(13) & chr(10))
for j = 0 to ubound(array_2)
if array_2(j) <> "" then
if x=empty then
x= "'" & array_2(j) & "'"
else
x= x & ",'" & array_2(j) & "'"
end if
end if
next
end if
next
End if
response.write x
因此x将返回'000-00001','000-00001','000-00001','000-00002'
我想从x中删除重复值并仅将其显示为:
x ='000-00001','000-00002'
我如何实现这一点。对此的任何帮助将不胜感激。 感谢
答案 0 :(得分:2)
要删除字符串列表的重复项,IMO的最佳选择是使用Dictionary对象。您可以使用此简短函数在给定的字符串数组上执行任务:
Function getUniqueItems(arrItems)
Dim objDict, strItem
Set objDict = Server.CreateObject("Scripting.Dictionary")
For Each strItem in arrItems
objDict.Item(strItem) = 1
Next
getUniqueItems = objDict.Keys
End Function
一个简单的测试:
' -- test output
Dim arrItems, strItem
arrItems = Array("a","b","b","c","c","c","d","e","e","e")
For Each strItem in getUniqueItems(arrItems)
Response.Write "<p>" & strItem & "</p>"
Next
这是您的用例示例:
' -- sample for your use case
Dim strInput, x
strInput = Request.Form("txt_str")
x = "'" & join(getUniqueItems(split(str, Chr(44))), "','") & "'"
顺便说一下,您是否注意到Array
和Str
是VBScript关键字,因此您可能会遇到使用此类变量名称的问题。因此,我认为在VBScript中使用变量名前缀是常见的做法。
答案 1 :(得分:0)
如果它是有序列表,请考虑使用带有最后一个值的变量:
lastval = ""
array = split(str,Chr(44))
if str <> "" then
x=empty
for i = 0 to ubound(array)
if array(i) <> "" then
array_2 = split(array(i),chr(13) & chr(10))
for j = 0 to ubound(array_2)
if array_2(j) <> "" then
if array_2(j) <> lastval then
lastval = array_2(j)
if x=empty then
x= "'" & array_2(j) & "'"
else
x= x & ",'" & array_2(j) & "'"
end if
end if
end if
next
end if
next
End if