如何从另一个字符串中提取给定的字符串?

时间:2015-02-17 12:49:41

标签: vbscript

我想从另一个字符串中提取一个给定的字符串。

样本字符串应为:

V_DDRF_的 2J _WTF

V_ASDF_的 8J _TLDR

V_LULZ_1337_的 3J

(提示:整数后面的字母总是J。)

现在我只想提取字符串粗体部分的整数。我如何实现这一目标? xJ只会出现在字符串的中间或末尾。

2 个答案:

答案 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