全部 - 我被困住了,需要一些幫助。我有一個字串,它是最終用戶的自由文本欄位。我需要從該欄位中提取特定的文本字串。
文本在一個陣列中,我已經用 InStr 確認了必要文本的位置,我知道它通常在兩側至少被一個空格包圍。
我正在尋找一種基于使用 InStr 和 Split 的位置提取它的方法,但我不確定如何嵌套這些。我需要的字串之前或之后的欄位中可能有任意數量的空格,因為有些人喜歡多余的空格。字串長度通常為 12 但可能或多或少 bc 它是一個自由文本欄位。
我愿意接受任何提取包含“PO”的字串的解決方案。
示例字串:“V000012345 SAPO22-12345 附加資訊等等”
If InStr(1, Arr2(j, 10), "PO", 1) > 0 Then
Arr3(i, 18) = Split(Arr2(j, 10), " ")(??)
End if
uj5u.com熱心網友回復:
您可以嘗試Filter()在Split(). 或者,使用正則運算式:
Sub Test()
Dim str As String: str = "V000012345 SAPO22-12345 additional information blah blah"
'Option 1: Via Filter() and Split():
Debug.Print Filter(Split(str), "PO")(0)
'Option 2: Via Regular Expressions:
With CreateObject("vbscript.regexp")
.Pattern = ".*?\s?(\S*PO\S*).*"
Debug.Print .Replace(str, "$1")
End With
End Sub
它區分大小寫,上面將回傳第一個匹配項。
uj5u.com熱心網友回復:
這將為您提供 SPLIT 的第一個元素,其中包含“PO”:
PONumber = Split(arr2(j, 10), " ")(Len(Left(arr2(j, 10), InStr(1, arr2(j, 10), "PO"))) - Len(Replace(Left(arr2(j, 10), InStr(1, arr2(j, 10), "PO")), " ", "")))
這通過計算 PO 之前的空格數并將其用作 SPLIT 的索引來作業。
但是我承認,JvdV 提供的 FILTER 功能為您省去了所有這些麻煩——我以前從未見過它以這種方式使用過,而且非常有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448711.html
