1

我有一个问题,可能容易与否。

我将进一步解释:我有一个这样的字符串:

str = "TR~Maintenance~fas plus-maintenicon|GR~Supplies~fas minus-suppicon|JK~Affidavit~fas minus-affiicon"

现在,我的目标是将它们分别放在一个数组中,例如:

TR
Maintenance
fas plus-maintenicon
GR
Supplies
fas minus-suppicon
JK
Affidavit
fas minus-affiicon

然后重塑并重新调整数组以仅保留以 fas.... 开头的字符串。

最简单的方法是什么?分裂?正则表达式?inStr?

我有以下代码:

Function funcSeparaLista(objLst)
    arrVLst = split(objLst, "~")
    
    for each x in arrVLst
        VLst = VLst&x&"<br/>"
    next
        
    funcSeparaLista = split(VLst, "|")
end function

t = funcSeparaLista(str)

但是使用以下方法检索数据:

response.write(t(0))
response.write(t(1))
response.write(t(2))
response.write(t(3))

我得到了不想要的结果:

TR
Maintenance
fas plus-mainteniconGR
Supplies
fas minus-suppiconJK
Affidavit
fas minus-affiicon

最重要的一件事:我希望我的 FUNCTION 只处理将分离的字符串放入数组中,然后在另一部分代码中处理它。

在数组保存我想要的所有内容后,我只希望数组保留这些数据:

fas plus-maintenicon
fas minus-suppicon
fas minus-affiicon

我做错了什么?请记住。这是 vbscript,而不是 VB.Net。在此先感谢,我认为这可能很容易,但在重做和检查代码几个小时后,我并没有完全尝试完成它。

4

1 回答 1

0

这是一个序列化字符串,其中记录分隔符是|,字段分隔符是~。您可以使用双循环轻松地构建二维数组。

Dim str: str = "TR~Maintenance~fas plus-maintenicon|GR~Supplies~fas minus-suppicon|JK~Affidavit~fas minus-affiicon"

Dim data: data = ConvertToArray(str, "|", "~")
WScript.Echo data(1, 2)

Function ConvertToArray(value, record_delim, field_delim)
    Dim data()
    If Len(value) < 1 Then ConvertToArray = Empty
    Dim records: records = Split(value, record_delim)
    If Not IsArray(records) Then ConvertToArray = Empty
    Dim rows: rows = UBound(records)
    Dim row, col
    For row = 0 To rows
        Dim fields: fields = Split(records(row), field_delim)
        If Not IsArray(fields) Then ConvertToArray = Empty
        Dim cols: cols = UBound(fields)
        ReDim Preserve data(cols, row)
        For col = 0 To cols
            data(col, row) = fields(col)
        Next
    Next
    ConvertToArray = data
End Function

输出:

Affidavit

使用此函数,您可以通过循环并仅返回每行的第三列来获得所需的输出。

Dim data: data = ConvertToArray(str, "|", "~")
If IsArray(data) Then
    Dim row
    Dim rows: rows = UBound(data, 2)
    For row = 0 To rows
        WScript.Echo data(2, row)
    Next
End If

输出:

fas plus-maintenicon
fas minus-suppicon
fas minus-affiicon
于 2022-03-01T13:48:24.277 回答