0

我正在从其他地方复制一个问题和答案,因为它部分符合我的需要,但不完全。

在 ASP 经典中,有没有办法计算字符串在字符串数组中出现的次数并根据字符串和出现次数输出?

例如,如果我有一个包含以下内容的数组:

你好
快乐的
你好
你好
测试
你好
测试
快乐的

输出将是:

你好 4
快乐 2
测试 1
测试 1

给出的答案是这样的:

我假设语言是 VBScript(因为这是大多数人使用经典 ASP 的语言)。

您可以使用 Dictionary 对象来跟踪各个计数:

Function CountValues(pArray)
    Dim i, item
    Dim dictCounts
    Set dictCounts = Server.CreateObject("Scripting.Dictionary")
    For i = LBound(pArray) To UBound(pArray)
        item = pArray(i)
        If Not dictCounts.Exists(item) Then 
            dictCounts.Add item, 0
        End If
        dictCounts.Item(item) = dictCounts.Item(item) + 1
    Next
    Set CountValues = dictCounts
End Function 

这很棒,但我不知道如何获取前 2 个最常用的单词,显示它们并能够将它们放入自己的变量中以在其他地方使用。

有人能帮忙吗?

4

2 回答 2

0

您不能在 VBScript 中对 Dictionary 对象进行排序,因此您必须使用其他东西。

我的建议是使用断开连接的 Recordset 对象来保存项目及其出现。这样的对象本身就支持排序,而且很容易使用。要实现这一点,请改用以下功能:

Function CountValues_Recordset(pArray)
    Dim i, item
    Dim oRS
    Const adVarChar = 200
    Const adInteger = 3
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Fields.Append "Item", adVarChar, 255
    oRS.Fields.Append "Occurrences", adInteger, 255
    oRS.Open
    For i = LBound(pArray) To UBound(pArray)
        item = pArray(i)
        oRS.Filter = "Item='" & Replace(item, "'", "''") & "'"
        If (oRS.EOF) Then
            oRS.AddNew
            oRS.Fields("Item").Value = item
            oRS.Fields("Occurrences").Value = 1
        Else  
            oRS.Fields("Occurrences").Value = oRS.Fields("Occurrences").Value + 1
        End If
        oRS.Update
        oRS.Filter = ""
    Next
    oRS.Sort = "Occurrences DESC"
    oRS.MoveFirst
    Set CountValues_Recordset = oRS
End Function

并使用它来实现您想要的输出:

Dim myArray, oRS
myArray = Array("happy", "hello", "hello", "testing", "hello", "test", "hello", "happy")
Set oRS = CountValues_Recordset(myArray)
Do Until oRS.EOF
    Response.Write(oRS("item") & " " & oRS("Occurrences") & "<br />")
    oRS.MoveNext
Loop
oRS.Close
Set oRS = Nothing

使用后不要忘记关闭并处理记录集。

于 2012-06-10T08:23:12.030 回答
0

您可以使用此方法遍历字典对象。在该循环中,跟踪前两个键及其在新数组或两个新变量中的计数。

于 2012-06-07T21:21:11.960 回答