在VB.net中,文本插入的几个自定义函数

一、如果你是高手,一定"识货",分享给你

二、可应用于文本插入的几种方式:6种

三、需要用到以下的几个函数:

上代码:

powershell 复制代码
Module TextModule    ''' <summary>    ''' 在指定位置插入文本    ''' </summary>    ''' <param name="originalText">原始文本</param>    ''' <param name="position">插入位置(从0开始)</param>    ''' <param name="insertText">要插入的文本</param>    ''' <returns>处理后的文本</returns>    Public Function InsertTextAtPosition(originalText As String, position As Integer, insertText As String) As String        If position < 0 Or position > originalText.Length Then            Return originalText        End If        Return originalText.Insert(position, insertText)    End Function    ''' <summary>    ''' 在每个字符间插入指定文本    ''' </summary>    ''' <param name="inputText">原始文本</param>    ''' <param name="separator">分隔符</param>    ''' <returns>处理后的文本</returns>    Public Function InsertBetweenCharacters(inputText As String, separator As String) As String        If String.IsNullOrEmpty(inputText) Then            Return ""        End If
        Dim sb As New Text.StringBuilder()        For i As Integer = 0 To inputText.Length - 1            sb.Append(inputText(i))            If i < inputText.Length - 1 Then                sb.Append(separator)            End If        Next        Return sb.ToString()    End Function
    ''' <summary>    ''' 在指定字符串(单/多字符)的前或后插入文本    ''' </summary>    ''' <param name="originalText">原始文本</param>    ''' <param name="targetString">要查找的目标字符串(支持多字符)</param>    ''' <param name="insertText">要插入的文本</param>    ''' <param name="positionOption">插入位置:'前' 或 '后'</param>    ''' <param name="occurrenceOption">匹配项选择:'第一个', '最后一个', '全部'</param>    ''' <returns>处理后的文本</returns>
    Public Function InsertTextAroundString(        originalText As String,        targetString As String,        insertText As String,        positionOption As String,        occurrenceOption As String    ) As String
        If String.IsNullOrEmpty(originalText) OrElse String.IsNullOrEmpty(targetString) Then            Return originalText        End If
        ' 统一转换为小写比较(不区分大小写)        Dim posOption = positionOption.ToLower()        Dim occOption = occurrenceOption.ToLower()
        ' 参数有效性检查        If posOption <> "前" AndAlso posOption <> "后" Then            Throw New ArgumentException("positionOption 必须是 '前' 或 '后'")        End If
        If occOption <> "第一个" AndAlso occOption <> "最后一个" AndAlso occOption <> "全部" Then            Throw New ArgumentException("occurrenceOption 必须是 '第一个', '最后一个' 或 '全部'")        End If
        ' 处理不同匹配选项        Select Case occOption            Case "第一个"                Dim index = originalText.IndexOf(targetString)                If index = -1 Then Return originalText ' 未找到
                If posOption = "前" Then                    Return originalText.Insert(index, insertText)                Else                    Return originalText.Insert(index + targetString.Length, insertText)                End If
            Case "最后一个"                Dim index = originalText.LastIndexOf(targetString)                If index = -1 Then Return originalText ' 未找到
                If posOption = "前" Then                    Return originalText.Insert(index, insertText)                Else                    Return originalText.Insert(index + targetString.Length, insertText)                End If
            Case "全部"                Dim result = originalText                Dim addedOffset = 0 ' 用于处理插入后位置偏移                Dim positions As New List(Of Integer)()
                ' 获取所有目标字符串的位置(非重叠匹配)                Dim searchIndex As Integer = 0                While searchIndex <= result.Length - targetString.Length                    Dim matchIndex = result.IndexOf(targetString, searchIndex)                    If matchIndex = -1 Then Exit While                    positions.Add(matchIndex)                    searchIndex = matchIndex + targetString.Length ' 跳过已匹配部分                End While
                ' 从前往后插入(处理位置偏移)                For Each pos In positions                    Dim insertPos = pos + addedOffset                    If posOption = "前" Then                        result = result.Insert(insertPos, insertText)                        addedOffset += insertText.Length                    Else                        result = result.Insert(insertPos + targetString.Length, insertText)                        addedOffset += insertText.Length                    End If                Next                Return result
            Case Else                Return originalText        End Select    End Function    '    '示例:    '    Dim testText = "李小龙张无忌东方不败"    'InsertTextAroundChar(testText, "小龙", "-" 前", "第一个")", 
End Module
相关推荐
Lee川5 小时前
Milvus 实战:当 RAG 遇上向量数据库,从"玩具 Demo"到"生产可用的"那一步
前端·数据库·人工智能
t5y225 小时前
【Linux】定时任务调度
linux·服务器
anOnion5 小时前
构建无障碍组件之Toolbar Pattern
前端·html·交互设计
HY小海5 小时前
【Linux】进程概念
linux·运维·服务器
惊鸿一博6 小时前
图标加载方式_zeroIcon_是否加前缀mdi
开发语言·前端·javascript
2501_940041746 小时前
前端工程化进阶:5个高交互与可视化项目提示词
前端
你很易烊千玺6 小时前
JS 异步 从零讲(大白话 + 真实场景 + 可运行案例)
前端·javascript·vue.js
华洛8 小时前
讲讲如何在传统产品中挖掘AI需求
javascript·产品经理·产品
why技术8 小时前
AI Coding开始进入第四个时代,我还没上车呢!
前端·人工智能·后端
黄筱筱筱筱筱筱筱8 小时前
LINUX-防火墙
linux·服务器·网络