在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
相关推荐
hpoenixf4 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特5 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
疯狂吧小飞牛5 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈5 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
泯泷5 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
hjxu20166 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
mengchanmian6 小时前
前端node常用配置
前端
华洛6 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq6 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
彭波3967 小时前
.NET Framework 3.5问题修复教程!可以离线修复
windows·安全·电脑·.net·开源软件