我想从另一个字符串中提取一个给定的字符串。
样本字符串应为:
V_DDRF_的 2J _WTF
V_ASDF_的 8J _TLDR
V_LULZ_1337_的 3J
(提示:整数后面的字母总是J。)
现在我只想提取字符串粗体部分的整数。我如何实现这一目标?
xJ
只会出现在字符串的中间或末尾。
答案 0 :(得分:2)
使用RegExp搜索" ",一个(序列)号码和一个可选的" " - 如:
Option Explicit
Function qq(s) : qq = """" & s & """" : End Function
Dim aTests : aTests = Array( _
"V_DDRF_2J_WTF" , "_2J_" _
, "V_ASDF_8J_TLDR", "_8J_" _
, "V_LULZ_1337_3J", "_3J" _
)
Dim r : Set r = New RegExp
'r.Pattern = "_\d+J(?:_|$)"
r.Pattern = "_\d+J_?"
Dim i, s
For i = 0 To UBound(aTests) Step 2
s = r.Execute(aTests(i + 0))(0).Value
WScript.Echo qq(aTests(i + 0)) _
, qq(s) _
, CStr(aTests(i + 1) = s)
Next
输出:
cscript 28561918.vbs
"V_DDRF_2J_WTF" "_2J_" True
"V_ASDF_8J_TLDR" "_8J_" True
"V_LULZ_1337_3J" "_3J" True
您可能需要修改模式,具体取决于您的输入数据;应该添加处理不匹配的代码。
答案 1 :(得分:0)
您可以使用正则表达式并使用此模式\d+J
或\d+\w
您可以测试模式here