在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
相关推荐
颜酱3 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
失忆爆表症3 小时前
05_UI 组件库集成指南:Shadcn/ui + Tailwind CSS v4
前端·css·ui
小迷糊的学习记录3 小时前
Vuex 与 pinia
前端·javascript·vue.js
发现一只大呆瓜3 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
不爱吃糖的程序媛4 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter
利刃大大4 小时前
【Vue】Element-Plus快速入门 && Form && Card && Table && Tree && Dialog && Menu
前端·javascript·vue.js·element-plus
yunfuuwqi4 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
NEXT064 小时前
AI 应用工程化实战:使用 LangChain.js 编排 DeepSeek 复杂工作流
前端·javascript·langchain
念风零壹4 小时前
AI 时代的前端技术:从系统编程到 JavaScript/TypeScript
前端·ai
代码游侠4 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法