Y at-il une fonction intégrée dans VB.net pour transformer des citations en guillemets

StackOverflow https://stackoverflow.com/questions/6813839

  •  25-10-2019
  •  | 
  •  

Question

Je veux tourner

Je suis accro aux « arachides » et « cacao »

dans

Je suis accro aux « arachides » et « cacao »

Comment puis-je faire cela? Tout construit en fonction pour cela?

Était-ce utile?

La solution

Bien sûr, il n'y a pas de fonction de commande interne. Comment diable peut-on quitter le 1er single devis inchangé et le 2 changé. Il doit y avoir plus de logique derrière elle pour vous donner le résultat que vous voulez. Un programme qui interprète la construction de langue anglaise, je suppose que

Evidement, je remarquai le problème après avoir écrit quelque chose, modifier pour vos besoins, il est donc pas écrit pour la queue du chat

 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

Autres conseils

détecte automatiquement si un espace blanc est avant ou après la chaîne et d'agir appropiately.

  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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top