これは、文字区切り文字を指定する文字列の右側を取得し、区切り文字を文字列内に保持するかどうかのコードです。また、直前に出現した文字区切り文字を指定したり、手動で区切り文字を定義することもできます。私の質問は、同じバージョンを作る方法ですが、今回は文字列の右端を残す代わりに取得するのですか?文字列の右側を区切り文字で指定します。
Public Shared Function GetLetSideStringByChar(splitterChar As String, searchingWord As String, keepCharAsWell As Boolean, lastindexof As Boolean, splitterCharPosition As Integer) As String
Dim index As Integer
Select Case lastindexof
Case False
index = GetNthIndex(searchingWord, splitterChar, splitterCharPosition)
Case True
index = searchingWord.LastIndexOf(splitterChar)
End Select
If index > 0 Then
If keepCharAsWell Then
searchingWord = searchingWord.Substring(0, index + splitterChar.Length)
Else
searchingWord = searchingWord.Substring(0, index)
End If
Else
searchingWord = String.Empty
End If
Return searchingWord
End Function
'jesli n separator nie odnalzeiony bedzie return -1, np jesli charseparator = . i damy n = 2 a word bedzie mial tlko jedna . to -1
Public Shared Function GetNthIndex(searchingWord As String, charseparator As Char, n As Integer) As Integer
Dim count As Integer = 0
For i As Integer = 0 To searchingWord.Length - 1
If searchingWord(i) = charseparator Then
count += 1
If count = n Then
Return i
End If
End If
Next
Return -1
End Function
この関数にもかかわらず、 'string.Split'を使用しない複雑な方法があります。何を試しましたか? – gobes
[特定の要件による文字列の特定の文字列部分を取る]の可能な複製(https://stackoverflow.com/questions/44240579/take-specific-string-part-of-string-by-specific-requments) – Mike
searchingWord.Substring (インデックス)?また、すべての文字をループする代わりにIndexOfを使用することもできます。 –