作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 Excel 插件来读取文本文件、提取值并将它们写入 Excel 文件。我需要分割一行,由 分隔一个或多个空格 并将其以数组的形式存储,我想从中提取所需的值。
我正在尝试实现这样的事情:
arrStr = Split(line, "/^\s*/")
最佳答案
如果您正在寻找正则表达式路线,那么您可以执行以下操作:
Dim line As String, arrStr, i As Long
line = "This is a test"
With New RegExp
.Pattern = "\S+"
.Global = True
If .test(line) Then
With .Execute(line)
ReDim arrStr(.Count - 1)
For i = 0 To .Count - 1
arrStr(i) = .Item(i)
Next
End With
End If
End With
IMPORTANT: You will need to create a reference to:
Microsoft VBScript Regular Expressions 5.5
in Tools > References
Otherwise, you can see Late Binding below
\^S*\$
有一些问题:
S*
实际上匹配的是文字大写 S,而不是您正在寻找的空白字符 - 因为它没有被转义。*
表示匹配零 或更多 \S
.您可能正在寻找 +
量词( 一个 或更多)。 *?
),因为你想尽可能多地消费。 (\S+)
被放置在一个捕获组中
(...)
这将捕获
\S+
的所有案例(所有不是空格的字符,
+
一次或多次。
.Global
所以你将在第一场比赛后继续匹配。
Dim line As String, arrStr, i As Long
line = "This is a test"
With CreateObject("VBScript.RegExp")
.Pattern = "\S+"
.Global = True
If .test(line) Then
With .Execute(line)
ReDim arrStr(.Count - 1)
For i = 0 To .Count - 1
arrStr(i) = .Item(i)
Next
End With
End If
End With
Split()
,但您表示在某些情况下,可能存在多个连续空格的问题。如果不是这种情况,您根本不需要正则表达式,例如:
arrStr = Split(line)
关于regex - 如何通过正则表达式分隔的拆分函数将VBA中的字符串拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53358309/
我是一名优秀的程序员,十分优秀!