我想转身

我沉迷于“花生”和“可可”

进入

我沉迷于“花生”和“可可”

我该怎么做?为此起作用吗?

有帮助吗?

解决方案

当然没有内置功能。您将如何将第一个引用保持不变,第二个引用变化。背后必须有更多的逻辑才能为您提供所需的结果。我猜是一个解释英语构造的程序

库尔斯(Cource),我在写东西后注意到了问题,为您的需求进行编辑,所以它不是为猫的尾巴写的

 Function trSmart(s As String) As String
    Dim inSngl As Boolean = False
    Dim inDbl As Boolean = False
    For i = 1 To s.Length()
        If s(i - 1) = "'"c Then
            If inSngl Then
                s = s.Substring(0, i - 1) & Chr(146) & s.Substring(i)
                inSngl = False
            Else
                s = s.Substring(0, i - 1) & Chr(145) & s.Substring(i)
                inSngl = True
            End If
        ElseIf s(i - 1) = """"c Then
            If inDbl Then
                s = s.Substring(0, i - 1) & Chr(147) & s.Substring(i)
                inDbl = False
            Else
                s = s.Substring(0, i - 1) & Chr(148) & s.Substring(i)
                inDbl = True
            End If
        End If
    Next
    Return s
End Function

其他提示

这将自动检测到一个空白是在字符串之前还是之后的,并适当起作用。

  Public Function SmartQuotes(ByVal someString As String) As String
        someString = " " + someString + " "
        Dim oldstring = someString
        someString = smarten(someString, "'"c, "‘"c, "’"c)
        someString = smarten(someString, """"c, Chr(147), Chr(148))
        If oldstring = someString Then
            Return Trim(someString)
        Else
            Return SmartQuotes(someString)
        End If
    End Function

    Public Function smarten(ByVal someString As String, ByVal original As Char, ByVal left As Char, ByVal right As Char) As String
        If someString.Contains(original) Then
            Dim index = someString.IndexOf(original)
            If leftQuoteorRightquote(someString, index) Then
                someString = someString.Remove(index, 1).Insert(index, left)
            Else
                someString = someString.Remove(index, 1).Insert(index, right)
            End If
        End If
        Return someString
    End Function
    Public Function leftQuoteorRightquote(ByVal somestring As String, ByVal index As Integer) As Boolean
        If somestring.Substring(index - 1, 1) = " " And somestring.Substring(index + 1, 1) <> " " Then
            Return True
        Else
            Return False
        End If
    End Function
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top