vb.net - 是否有一个函数可以在 vb.net 中的 2 个字符串之间获取字符串
问题描述
在教我女儿编程失败的尝试中,我教她做这个
Public Shared Function getBetween(strSource As String, startSearchIndex As Integer, startSearch As String, endSearch As String) As (nextIndex As Integer, Content As String)
Dim IndexStart = strSource.IndexOf(startSearch, startSearchIndex)
Dim startContent = IndexStart + startSearch.Length
Dim indexEnd = strSource.IndexOf(endSearch, startContent)
Dim content = strSource.Substring(startContent, indexEnd - startContent)
Dim nextIndex = indexEnd + endSearch.Length
Return (nextIndex, content)
End Function
我们知道函数的作用。获取大字符串中两个字符串之间的字符串。
我想知道是否有内置功能?
样品:
如果我使用这个测试功能
Public Shared Sub test(txt As TextBox)
Dim source = "0123456789([012345])0123456789([ABCDEF])0123456789([GHIJK])"
txt.Text += source + System.Environment.NewLine
getBetween3Times(txt, source, "(", ")")
getBetween3Times(txt, source, "([", "])")
getBetween3Times(txt, source, "[", "]")
End Sub
Private Shared Sub getBetween3Times(txt As TextBox, source As String, startsearch As String, endsearch As String)
Dim result = getBetween(source, 0, startsearch, endsearch)
txt.Text += result.Content + System.Environment.NewLine
result = getBetween(source, result.nextIndex, startsearch, endsearch)
txt.Text += result.Content + System.Environment.NewLine
result = getBetween(source, result.nextIndex, startsearch, endsearch)
txt.Text += result.Content + System.Environment.NewLine
End Sub
它会产生
0123456789([012345])0123456789([ABCDEF])0123456789([GHIJK])
[012345]
[ABCDEF]
[GHIJK]
012345
ABCDEF
GHIJK
012345
ABCDEF
GHIJK
解决方案
不,没有内置方法,或者是的,有,但你已经使用它们了。
也许您想处理无效输入。此外,您的方法包括搜索令牌,但您想要介于两者之间的文本,所以也许这个更好一点:
Public Shared Function GetTextBetween(strSource As String, startSearchIndex As Integer, startSearch As String, endSearch As String) As (nextIndex As Integer, Content As String)
If startSearchIndex < 0 Orelse startSearchIndex >= strSource.Length Then Throw New ArgumentException(Nameof(startSearchIndex))
Dim index = strSource.IndexOf(startSearch, startSearchIndex)
If index = -1 Then Return (-1, Nothing)
index += startSearch.Length
Dim endIndex = strSource.IndexOf(endSearch, index+1)
If endIndex = -1 Then Return (-1, Nothing)
Dim content = strSource.Substring(index, endIndex - index)
Return (endIndex + endSearch.Length, content)
End Function
Dim sampleText = "It is the end of the world"
Dim result = GetTextBetween(sampleText, 0, "is ", " of") ' should be "the end"
推荐阅读
- python - 在python中附加文本文件
- java - 如何使用 jdbc 从表行中获取数据?
- docusignapi - DocuSign,发送 2 个文档,signhere documentid 被忽略
- oracle - 如何在以下 SQL 查询中找到错误?
- api-platform.com - API 平台验证错误与 ORM 异常
- javascript - HTML中的背景不会根据可变数字而改变
- python - 无法使用列表满足 maxheap 属性
- azure - 如何在 Teams 中获取访问令牌?
- python - Pandas df:不同列中的组、bin和平均值?
- websocket - Nuxt Apollo websockets 链接选项?