0

回したい

「ピーナッツ」と「ココア」にはまっています

の中へ

「ピーナッツ」と「ココア」にはまっています</p>

どうすればいいですか?そのための組み込み関数はありますか?

4

2 に答える 2

2

もちろん、組み込み関数はありません。最初の一重引用符を変更せずに、2 番目の引用符を変更したままにするにはどうすればよいでしょうか。必要な結果を得るには、その背後にさらにロジックが必要です。英語の構文を解釈するプログラムだと思います

もちろん、何かを書いた後に問題を指摘したので、必要に応じて編集してください。猫の尻尾用には書かれていません

 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
于 2011-07-25T11:41:12.327 に答える
0

これにより、空白が文字列の前後にあるかどうかが自動的に検出され、適切に動作します。

  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
于 2011-07-26T03:53:45.780 に答える