VBScript - 用 2 个目标字符拆分一个字符串,将它们转换为复合数组,然后从数组中删除那些不需要的
VBScript - Spliting a String with 2 target chars, turning them in composite Array and then removing those unnecessary from the array
我有一个问题可能简单也可能不简单。
我会进一步解释:我有这样一个字符串:
str = "TR~Maintenance~fas plus-maintenicon|GR~Supplies~fas minus-suppicon|JK~Affidavit~fas minus-affiicon"
现在,我的 objective 是将它们分别放在一个数组中,例如:
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。
在此先感谢我认为这可能非常容易,但我并没有在重做和检查代码几个小时后尝试完成它。
这是一个序列化字符串,记录分隔符为|
,字段分隔符为~
。您可以使用双循环从中轻松构建二维数组。
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
使用此函数,您可以通过循环并仅返回每行的第 3 列来获得所需的输出。
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
我有一个问题可能简单也可能不简单。
我会进一步解释:我有这样一个字符串:
str = "TR~Maintenance~fas plus-maintenicon|GR~Supplies~fas minus-suppicon|JK~Affidavit~fas minus-affiicon"
现在,我的 objective 是将它们分别放在一个数组中,例如:
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。 在此先感谢我认为这可能非常容易,但我并没有在重做和检查代码几个小时后尝试完成它。
这是一个序列化字符串,记录分隔符为|
,字段分隔符为~
。您可以使用双循环从中轻松构建二维数组。
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
使用此函数,您可以通过循环并仅返回每行的第 3 列来获得所需的输出。
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