如何 parse/split 从右到左第二个特定字符?
How do I parse/split the second specific character from the right to left?
我有这样的字符串:
sometexthere_moretext_moretext_12512512521_251125512125
或:
sometexthere_moretext_12512512521_251125512125
在任何一种情况下,我都需要像这样解析两种情况:
var1 = sometexthere_moretext_moretext_
var2 = 12512512521_251125512125
和
var1 = sometexthere_moretext_
var2 = 12512512521_251125512125
所以我试图找到如何 parse/split 从右到左的第二个“_”。任何帮助将不胜感激。
Dim variable As String
variable = sometexthere_moretext_moretext_12512512521_251125512125
Dim StringArray() As String
StringArray() = Split(variable, "_")
For i = 0 To UBound(StringArray)
MsgBox Trim$(StringArray(i))
Next
你很接近,UBound(StringArray)
将 return 4 在这个例子中,所以你想从索引 3 开始:
Dim variable As String
variable = "sometexthere_moretext_moretext_12512512521_251125512125"
Dim StringArray() As String
StringArray() = Split(variable, "_")
Dim var1 As String
Dim var2 As String
' Build var1
var1 = ""
For i = 0 To (UBound(StringArray) - 2)
If var1 <> "" Then var1 = var1 & "_"
var1 = var1 & Trim$(StringArray(i))
Next
' Build var2
var2 = ""
For i = (UBound(StringArray) - 1) To UBound(StringArray)
If var2 <> "" Then var2 = var2 & "_"
var2 = var2 & Trim$(StringArray(i))
Next
MsgBox "var1: " & var1 & vbCrLf & "var2: " & var2
使用此代码,无论数字前面有多少字段,您都只会得到数字。
另一种方式,使用 instrRev :
Dim leftPart as string, rightPart as String, var1 as string
var1 = "sometexthere_moretext_moretext_12512512521_251125512125"
If UBound(Split(var1, "_")) >= 2 Then 'Assuming you have at least 2 "_" in var1
leftPart = Left(var1, InstrRev(Left(var1, instrRev(var1, "_") - 1), "_") - 1)
rightPart = Mid(var1, InstrRev(Left(var1, instrRev(var1, "_") - 1), "_") + 1)
Endif
我有这样的字符串:
sometexthere_moretext_moretext_12512512521_251125512125
或:
sometexthere_moretext_12512512521_251125512125
在任何一种情况下,我都需要像这样解析两种情况:
var1 = sometexthere_moretext_moretext_ var2 = 12512512521_251125512125
和
var1 = sometexthere_moretext_ var2 = 12512512521_251125512125
所以我试图找到如何 parse/split 从右到左的第二个“_”。任何帮助将不胜感激。
Dim variable As String
variable = sometexthere_moretext_moretext_12512512521_251125512125
Dim StringArray() As String
StringArray() = Split(variable, "_")
For i = 0 To UBound(StringArray)
MsgBox Trim$(StringArray(i))
Next
你很接近,UBound(StringArray)
将 return 4 在这个例子中,所以你想从索引 3 开始:
Dim variable As String
variable = "sometexthere_moretext_moretext_12512512521_251125512125"
Dim StringArray() As String
StringArray() = Split(variable, "_")
Dim var1 As String
Dim var2 As String
' Build var1
var1 = ""
For i = 0 To (UBound(StringArray) - 2)
If var1 <> "" Then var1 = var1 & "_"
var1 = var1 & Trim$(StringArray(i))
Next
' Build var2
var2 = ""
For i = (UBound(StringArray) - 1) To UBound(StringArray)
If var2 <> "" Then var2 = var2 & "_"
var2 = var2 & Trim$(StringArray(i))
Next
MsgBox "var1: " & var1 & vbCrLf & "var2: " & var2
使用此代码,无论数字前面有多少字段,您都只会得到数字。
另一种方式,使用 instrRev :
Dim leftPart as string, rightPart as String, var1 as string
var1 = "sometexthere_moretext_moretext_12512512521_251125512125"
If UBound(Split(var1, "_")) >= 2 Then 'Assuming you have at least 2 "_" in var1
leftPart = Left(var1, InstrRev(Left(var1, instrRev(var1, "_") - 1), "_") - 1)
rightPart = Mid(var1, InstrRev(Left(var1, instrRev(var1, "_") - 1), "_") + 1)
Endif