首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何删除excel vba中字符串中的第一个逗号

如何删除excel vba中字符串中的第一个逗号
EN

Stack Overflow用户
提问于 2013-11-13 19:54:43
回答 3查看 1.7K关注 0票数 0

如果我有一个字符串:"foo, bar" baz, test, blah,我如何删除一个特定的逗号,也就是说,不是所有的逗号,而是我选择的一个逗号?

使用替换INSTR,我似乎不知道逗号在哪里。问题是,如果逗号出现在引号之间,我只想删除它。

所以,我可能想删除第一个逗号,而我可能不需要。

更清楚地说,如果一组引号之间有逗号,我需要删除它。如果没有,那就没什么可做的了。但是,我不能只删除所有逗号,因为我需要字符串中的其他逗号。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-13 20:29:31

以这种方式尝试使用Regexp:

代码语言:javascript
代码运行次数:0
运行
复制
Sub foo()
    Dim TXT As String
    TXT = """foo, bar"" baz, test, blah"

    Debug.Print TXT

    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")

    With objRegExp
        .Global = True  '
        .Pattern = "(""\w+)(,)(\s)(\w+"")"

    Debug.Print .Replace(TXT, "$1$3$4")

    End With


End Sub

对于您提供的示例值,它的工作原理与预期一样,但可能需要通过更改.Pattern来对更复杂的文本进行额外的调整。

如果您想将此解决方案用作函数而不是使用以下代码,请编辑

代码语言:javascript
代码运行次数:0
运行
复制
Function RemoveCommaInQuotation(TXT As String)

    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")

    With objRegExp
        .Global = True 
        .Pattern = "(""\w+)(,)(\s)(\w+"")"

    RemoveCommaInQuotation = .Replace(TXT, "$1$3$4")

    End With


End Function
票数 5
EN

Stack Overflow用户

发布于 2013-11-13 20:50:32

呃。还有另一种方法

代码语言:javascript
代码运行次数:0
运行
复制
Public Function foobar(yourStr As String) As String
    Dim parts() As String
    parts = Split(yourStr, Chr(34))
    parts(1) = Replace(parts(1), ",", "")
    foobar = Join(parts, Chr(34))
End Function
票数 4
EN

Stack Overflow用户

发布于 2013-11-13 20:35:28

对奇数双引号进行一些错误检查:

代码语言:javascript
代码运行次数:0
运行
复制
Function myremove(mystr As String) As String
    Dim sep As String
    sep = """"
    Dim strspl() As String
    strspl = Split(mystr, sep, -1, vbBinaryCompare)
    Dim imin As Integer, imax As Integer, nstr As Integer, istr As Integer
    imin = LBound(strspl)
    imax = UBound(strspl)
    nstr = imax - imin
    If ((nstr Mod 2) <> 0) Then
      myremove = "Odd number of double quotes"
      Exit Function
    End If
    For istr = imin + 1 To imax Step 2
      strspl(istr) = Replace(strspl(istr), ",", "")
    Next istr
    myremove = Join(strspl(), """")
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19963082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档