銀河鉄道

【VBA】文字列から指定文字より前/後ろをカットする|InStrRev/Left$/Mid$

サムネイル
[VBA]Cutbefore after

指定文字列の最後の出現位置で切る

元の文字列から、指定文字より後ろの文字をカット|前を残す

' return the part before the last occurrence of strCut
' 指定文字列の最後の出現より前の部分を返す
Public Function CutAfterLastStr( _
                      		ByVal strSrc As String, _
                      		ByVal strCut As String) As String

	Dim pos As Long
	pos = InStrRev(strSrc, strCut, , vbTextCompare)

	If pos = 0 Then
		CutAfterLastStr = strSrc   ' 見つからなければ元の文字列を返す
	Else
		CutAfterLastStr = Left$(strSrc, pos - 1)
	End If
End Function

元の文字列から、指定文字より前の文字をカット|後ろを残す

' return the part after the last occurrence of strCut
' 指定文字列の最後の出現より後の部分を返す
Public Function CutBeforeLastStr( _
                      		ByVal strSrc As String, _
                       		ByVal strCut As String) As String

	Dim pos As Long
	pos = InStrRev(strSrc, strCut, , vbTextCompare)

	If pos = 0 Then
		CutBeforeLastStr = strSrc   ' 見つからなければ元の文字列を返す
	Else
		CutBeforeLastStr = Mid$(strSrc, pos + Len(strCut))
	End If
End Function

Example

入力文字列指定文字関数結果
"C:\Work\Project\Report.xlsx""\"CutAfterLastStr"C:\Work\Project"
"C:\Work\Project\Report.xlsx""\"CutBeforeLastStr"Report.xlsx"
"user@example.com""@"CutAfterLastStr"user"
"user@example.com""@"CutBeforeLastStr"example.com"

Vocabulary

| Defensive Programming | 防御的プログラミング |
| Guard Clause | ガード節 |
| InStrRev Function | InStrRev関数 |
| Edge Case | エッジケース |
| Utility Function | ユーティリティ関数 |
| Intent-Revealing Code | 意図が明確なコード |

Defensive programming keeps utility functions trustworthy.

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧