2011-07-25 25 views

答えて

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 
0

、ニーズのためにそれを編集し、私は何かを書いた後、問題を指摘し讲义1コースの

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

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 
関連する問題