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

如何拆分含@前缀的字符串:提取独立名称元素并保留剩余文本为单一元素

VBA实现带@前缀的字符串拆分需求

我需要实现一个字符串拆分功能:把所有以@为前缀的单词单独存为数组的独立元素,其余的文本保留为单个字符串。举个例子:

输入:"@Steve @Lisa @Matthew Can you take a look at this please?"
预期输出:("Steve", "Lisa", "Matthew", "Can you take a look at this please?")

我之前尝试用@作为分隔符拆分,代码如下:

Dim Str As String
Dim Result() As String
Str = "@Steve @Lisa @Matthew Can you take a look at this please?"
Result = Split(Str, "@")

但得到的结果是:("Steve ", "Lisa ", "Matthew Can you take a look at this please?") —— 最后一个元素同时包含了名称和句子,没达到预期效果。请问怎么实现以下要求:

  • 所有带@的名称都作为独立元素存储
  • 剩余的文本作为单个元素
  • 去掉每个名称开头的@字符

解决方案:使用正则表达式精准匹配+提取

普通的Split方法没法区分@开头的独立单词和后续文本,用正则表达式可以精准定位所有@前缀的名称,再提取剩余文本组合成目标数组。以下是具体实现代码:

Sub SplitAtMentions()
    Dim inputStr As String
    Dim regex As Object
    Dim matches As Object
    Dim resultArr() As String
    Dim remainingText As String
    Dim i As Integer
    
    inputStr = "@Steve @Lisa @Matthew Can you take a look at this please?"
    
    ' 后期绑定正则对象,无需手动引用库
    Set regex = CreateObject("VBScript.RegExp")
    regex.Global = True
    ' 匹配@开头的单词,括号捕获去掉@后的名称,\s?匹配名称后的可选空格
    regex.Pattern = "@(\w+)\s?"
    
    ' 获取所有符合条件的@名称匹配项
    Set matches = regex.Execute(inputStr)
    
    ' 初始化结果数组:匹配到的名称数量 + 1个剩余文本元素
    ReDim resultArr(0 To matches.Count)
    
    ' 填充名称元素,提取捕获组里的内容(去掉@后的纯名称)
    For i = 0 To matches.Count - 1
        resultArr(i) = matches(i).SubMatches(0)
    Next i
    
    ' 替换所有@名称为空,再清理前后多余空格得到剩余文本
    remainingText = Trim(regex.Replace(inputStr, ""))
    resultArr(matches.Count) = remainingText
    
    ' 测试输出(可删除)
    For i = LBound(resultArr) To UBound(resultArr)
        Debug.Print resultArr(i)
    Next i
End Sub

代码细节说明:

  • regex.Pattern = "@(\w+)\s?":如果你的名称包含非字母数字(比如@Steve.Jones、@Lisa-Smith),可以把正则调整为@([^\s]+)\s?,这样会匹配@后面直到下一个空格前的所有字符,适配更多场景。
  • regex.Global = True:确保遍历整个字符串,匹配所有符合条件的@名称,而不是只匹配第一个。
  • Trim(regex.Replace(inputStr, "")):把所有匹配到的@名称和后续空格清空后,用Trim去除文本前后的冗余空格,保证剩余文本的整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:27:43