在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
相关推荐
前端之虎陈随易2 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·typescript·npm·node.js
ayqy贾杰3 小时前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
changshuaihua0013 小时前
扣子开发指南
javascript·人工智能
椰猫子3 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
白菜欣3 小时前
Linux —进程概念
linux·运维·服务器
love530love3 小时前
如何在 Google Chrome 中强制开启 Gemini AI 侧边栏(完整图文教程)
前端·人工智能·chrome·windows
光影少年3 小时前
对typescript开发框架的理解?
前端·javascript·typescript
杜哥无敌3 小时前
FreeSSHd vs FileZilla Server vs SFTPGo:Windows SFTP服务器易用性终极横向测评
运维·服务器·windows
跨境数据猎手3 小时前
反向海淘代购系统:1688 / 淘宝自动代采 + API 同步(附可用源码)
前端
楼田莉子3 小时前
仿Muduo的高并发服务器:Channel模块与Poller模块
linux·服务器·c++·学习·设计模式