Y at-il une fonction intégrée dans VB.net pour transformer des citations en guillemets
-
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?
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