VisualBasic версия
Код для поиска подстроки, если она найдена, вернуть завершающую часть - остаток строки сразу за (конечный конец) найденной подстроки
jp2code ответ отвечал моим целям элегантно. В дополнение к примерам автор также указал, что код был хорошо опробован и проверен с течением времени. VisualBasic эквивалент его / ее кода:
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Function TextFollowing(txt As String, value As String) As String
If Not String.IsNullOrEmpty(txt) AndAlso Not String.IsNullOrEmpty(value) Then
Dim index As Integer = txt.IndexOf(value)
If -1 < index Then
Dim start As Integer = index + value.Length
If start <= txt.Length Then
Return txt.Substring(start)
End If
End If
End If
Return Nothing
End Function
End Module
Код был протестирован с использованием VS Community 2017 .
Пример использования
Dim exampleText As String = "C-sharp to VisualBasic"
Dim afterCSharp = exampleText.TextFollowing("to")
'afterCSharp = " VisualBasic"
Метод расширения TextFollowing()
теперь доступен для String
объектов.
- Строка 1:
exampleText
равно String
, и поэтому наш метод расширения доступен
- Строка 2:
exampleText.TextFollowing()
использует метод расширения
Дополнительный метод
Может быть полезно иметь дополнительный метод - получить предыдущую часть строки. Дополнительные методы расширения записываются и помещаются вместе в один модуль комбинированного кода:
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Function TextFollowing(txt As String, value As String) As String
If Not String.IsNullOrEmpty(txt) AndAlso Not String.IsNullOrEmpty(value) Then
Dim index As Integer = txt.IndexOf(value)
If -1 < index Then
Dim start As Integer = index + value.Length
If start <= txt.Length Then
Return txt.Substring(start)
End If
End If
End If
Return Nothing
End Function
<Extension()>
Public Function TextPreceding(txt As String, value As String) As String
If Not String.IsNullOrEmpty(txt) AndAlso Not String.IsNullOrEmpty(value) Then
Dim index As Integer = txt.IndexOf(value)
If -1 < index Then
Return txt.Substring(0, index)
End If
End If
Return Nothing
End Function
End Module
Пример использования
Dim exampleText As String = "C-sharp to VisualBasic"
Dim beforeVisualBasic = exampleText.TextPreceding("to")
'beforeVisualBasic = "C-sharp "
В моем случае использования необходимо проверить, если LargeString.Contains(SmallString)
, прежде чем использовать эти методы расширения. Для более быстрого выполнения кода это можно было бы объединить с методами расширения, представленными выше, чего я не сделал. Это связано с тем, что медлительности не наблюдается, поэтому предпочтение отдается повторному использованию кода.