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

如何将含特殊字符的VB.NET字符串正确分割为数组

解决VB.NET中带转义单引号和内部逗号的字符串转数组问题

你的问题核心是字符串中的逗号分为两种:元素分隔用的逗号(单引号外)和元素内部的逗号(单引号内),直接全局替换单引号再分割会混淆这两种逗号,同时丢失转义的单引号。下面提供两种可靠的实现方式:

方法一:正则表达式匹配(推荐,通用性强)

利用正则匹配所有被单引号包裹的元素内容,再对每个元素处理转义的双单引号:

Imports System.Text.RegularExpressions

Dim MyString As String = "'O''Neil, Bill','Dave, John','NYC'"
Dim matches As MatchCollection = Regex.Matches(MyString, "'(.*?)'", RegexOptions.Singleline)
Dim MyArray As New List(Of String)()

For Each m As Match In matches
    ' 将元素内的''替换为',并加入列表
    MyArray.Add(m.Groups(1).Value.Replace("''", "'"))
Next

' 转成数组(如果需要)
Dim resultArray() As String = MyArray.ToArray()

效果验证:

  • resultArray(0) = O'Neil, Bill
  • resultArray(1) = Dave, John
  • resultArray(2) = NYC

正则表达式'(.*?)'的作用是匹配被单引号包裹的任意内容(非贪婪模式,避免跨元素匹配),Groups(1)取到单引号内部的内容,再替换''为'即可还原转义的单引号。

方法二:临时分隔符替换法(适合简单场景)

如果能确保原字符串中不存在某个特殊字符(比如|),可以先替换元素分隔用的','为临时字符,再处理转义单引号,最后分割:

Dim MyString As String = "'O''Neil, Bill','Dave, John','NYC'"
' 第一步:替换元素分隔符','为|
Dim tempStr As String = MyString.Replace("','", "|")
' 第二步:去掉首尾的单引号
tempStr = tempStr.Trim("'"c)
' 第三步:替换转义的''为'
tempStr = tempStr.Replace("''", "'")
' 第四步:按|分割成数组
Dim MyArray() As String = tempStr.Split("|"c)

这种方法逻辑简单,但局限性是必须保证临时字符|不在原字符串的元素内容中,否则会出错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:03:10