You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中如何实现不区分大小写的字符串替换

.NET 自定义匹配规则的字符串替换方法

你对原生String.Replace的判断是对的,它默认采用二进制序号比较规则,区分大小写,没有直接开放比较规则的入参。要实现忽略大小写、固定区域性匹配这类自定义规则的替换,有这几种官方支持的实现方式:

  • 直接用VB.NET内置的Replace兼容函数
    写VB.NET代码完全可以直接沿用类似VB6的写法,Microsoft.VisualBasic程序集里的内置Replace函数原生支持指定比较规则,迁移零成本:
    ' 忽略大小写文本比较写法
    s = Replace(s, "Find", "Replace", Compare:=CompareMethod.Text)
    
    这个函数是官方正式支持的API,不是遗留兼容的过时方法,可以放心用。
  • 用正则Regex.Replace实现(C#/VB.NET通用)
    如果不想依赖VB专属库,跨语言可以用正则替换,通过正则选项指定匹配规则:
    s = Regex.Replace(
        input:=s,
        pattern:=Regex.Escape("Find"), ' 转义查找串里的正则特殊字符,按普通文本匹配
        replacement:="Replace",
        options:=RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant
    )
    
  • 自定义扩展方法封装
    追求更高性能、不想引入正则开销的话,可以基于String.IndexOf的比较规则入参自己封装替换逻辑,核心是通过StringComparison枚举控制匹配行为:
    <Extension>
    Public Function CustomReplace(input As String, find As String, replace As String, comparison As StringComparison) As String
        If String.IsNullOrEmpty(input) Or String.IsNullOrEmpty(find) Then Return input
        Dim startIndex = 0
        Dim hitPos = input.IndexOf(find, startIndex, comparison)
        If hitPos < 0 Then Return input
        Dim sb As New StringBuilder()
        While hitPos >= 0
            sb.Append(input, startIndex, hitPos - startIndex)
            sb.Append(replace)
            startIndex = hitPos + find.Length
            hitPos = input.IndexOf(find, startIndex, comparison)
        End While
        sb.Append(input, startIndex, input.Length - startIndex)
        Return sb.ToString()
    End Function
    
    ' 调用示例:固定区域性、忽略大小写匹配替换
    s = s.CustomReplace("Find", "Replace", StringComparison.InvariantCultureIgnoreCase)
    
    常用的StringComparison枚举值对应不同匹配规则:
    • Ordinal:默认二进制比较,区分大小写,性能最高
    • OrdinalIgnoreCase:二进制比较,忽略大小写
    • InvariantCulture:固定区域性比较,区分大小写
    • InvariantCultureIgnoreCase:固定区域性比较,忽略大小写
    • CurrentCulture/CurrentCultureIgnoreCase:使用当前线程区域设置比较

你提到的超长枚举名是调侃.NET早期枚举命名冗长的梗,真实不存在这个值,控制字符串比较规则只需要用上面列的StringComparison枚举即可。

参考截图

内容的提问来源于stack exchange,提问作者tmighty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:09:17