arrays - 如何在逗号之间拆分字符串并使用vba将每个字符串存储在数组变量中
问题描述
我有一个问题: 如何在开括号和闭括号内的逗号之间拆分字符串,并将每个逗号存储在数组变量中?
例子:
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
上面有一个输入字符串,我想将三个等子字符串存储在一个数组变量中,这些子字符串位于开括号和闭括号内的逗号之间:
substr(0) = "u1 u1t_a"
substr(1) = "u2 u2t_b"
substr(2) = "s2 s2t_c"
substr(n) = "...n"
到目前为止,我很难在 VBA 中使用循环和数组,所以我的代码就像一个蛮力,最多只能处理 3 个文本,因为代码会变长,所以我做了一个限制。
在这里查看我的代码:
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c )"
substr1 = Right(strinput, Len(strinput) - Find("(", strinput))
'Output: u1 u1t_a, u2 u2t_b, s2 s2t_c )
substr1f = Left(substr1, Find(",", substr1) - 1)
'Output: u1 u1t_a
substr2 = Right(substr1, Len(substr1) - Find("(", substr1))
'Output: u2 u2t_b, s2 s2t_c )
substr2f = Left(substr2, Find(",", substr2) - 1)
'Output: u2 u2t_b
substr3 = Right(substr2, Len(substr2) - Find("(", substr2))
'Output: s2 s2t_c )
substr3f = Left(substr3, Find(")", substr3) - 1)
'Output: s2 s2t_c
我怎样才能使这个循环?
解决方案
这是你想要做的吗?我已经评论了代码,所以你理解它可能没有问题......欢迎来到stackoverflow :)
Option Explicit
Sub Sample()
Dim Ar As Variant
Dim strinput As String, s As String
Dim i As Long
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
'~~> Replace ( and ) with ""
s = Replace(Replace(strinput, ")", ""), "(", "")
'~~> Split and store in an arry based on ","
Ar = Split(s, ",")
'~~> See what is there in the array
For i = LBound(Ar) To UBound(Ar)
Debug.Print Ar(i)
Next i
End Sub
如果你想结合,Replace and Split
那么你也可以使用它
Option Explicit
Sub Sample()
Dim Ar As Variant
Dim strinput As String
Dim i As Long
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
Ar = Split(Split(Split(strinput, "(")(1), ")")(0), ",")
'~~> See what is there in the array
For i = LBound(Ar) To UBound(Ar)
Debug.Print Ar(i)
Next i
End Sub
推荐阅读
- javascript - 粘性部分在滚动时会抖动(闪烁)
- ios - iOS B2B Distribution - Apple 将如何测试具有私有部署服务的移动应用程序?
- java - 在 Java 控制台中检测 Ctrl+C
- text - 用于在图表中可视化文本的库
- java - Android Places Autocomplete 如何检测每次建议更改的时间?
- pandas - 熊猫在条件下与 groupby 求和
- scala - 类构造函数中的非字段参数?
- mysql - MySQL 查询到 linq
- angular - 如何编写仅在“Promise.resolve()”上执行的异步方法装饰器?
- angular - Angular 2+ NgOnInit 为输入数组赋值,但抛出未定义的错误