c#中format函數功能之一的VB實現——參數替換rFormat()

來源:互聯網
上載者:User

前幾天參加C#培訓,發現其中的FORMAT參數替換功能實在是實用,尤其是在寫SQL語句的時候,比如一個SQL 陳述式

insert into (f1,f2,f3) values (v1,v2,v3)

如果要用VB來寫,要加一串的 "" 和 & 連字號,實在是難寫又難看。基本上只要參數一多,幾乎100%要寫錯。如果用C#來寫,就是這樣

str sql="insert into (f1,f2,f3) values ('{0}','{1}','{2}')"

sql=sql.string.format(sql,v1,v2,v3)

文法寫的可能不對,才培訓幾天,還沒太熟悉C#的文法。這樣寫些來實在是方便,各個參數的位置一目瞭然。今天想了想 ,終於還是決定自己寫一個VB的函數,花了一個多小時,終於搞定,加入了各種錯誤檢查,應該是沒什麼問題了。

 

VB最多隻能繼行25行,所以就寫這麼多了,應該是夠用了,實在不夠用就去幾個換行加參數就是了。

  1. Public Function rFormat(str As String, _
  2.     ByVal v0 As Variant, _
  3.     Optional ByVal v1 As Variant = "{E}", _
  4.     Optional ByVal v2 As Variant = "{E}", _
  5.     Optional ByVal v3 As Variant = "{E}", _
  6.     Optional ByVal v4 As Variant = "{E}", _
  7.     Optional ByVal v5 As Variant = "{E}", _
  8.     Optional ByVal v6 As Variant = "{E}", _
  9.     Optional ByVal v7 As Variant = "{E}", _
  10.     Optional ByVal v8 As Variant = "{E}", _
  11.     Optional ByVal v9 As Variant = "{E}", _
  12.     Optional ByVal v10 As Variant = "{E}", _
  13.     Optional ByVal v11 As Variant = "{E}", _
  14.     Optional ByVal v12 As Variant = "{E}", _
  15.     Optional ByVal v13 As Variant = "{E}", _
  16.     Optional ByVal v14 As Variant = "{E}", _
  17.     Optional ByVal v15 As Variant = "{E}", _
  18.     Optional ByVal v16 As Variant = "{E}", _
  19.     Optional ByVal v17 As Variant = "{E}", _
  20.     Optional ByVal v18 As Variant = "{E}", _
  21.     Optional ByVal v19 As Variant = "{E}", _
  22.     Optional ByVal v20 As Variant = "{E}", _
  23.     Optional ByVal v21 As Variant = "{E}", _
  24.     Optional ByVal v22 As Variant = "{E}" _
  25.     )
  26. Dim Ret, i As Integer, n As Integer, ocErr As Boolean
  27. Dim isLast As Boolean, ci As Integer, p1, plen
  28. ''檢查參數
  29. isLast = False
  30. For i = 0 To 22
  31.     p1 = InStr(str, "{" & i & "}")
  32.     plen = Len("{" & i & "}")
  33.     If p1 > 0 Then
  34.         ci = Val(Mid(str, p1 + 1, plen - 2))
  35.         If ci <> i Then
  36.             Err.Raise 1, "rFormat", "提供的參數化字串順序不匹配!!"
  37.         End If
  38.         If isLast Then
  39.             Err.Raise 2, "rFormat", "提供的參數化字串可能有缺失!!"
  40.         End If
  41.         n = i + 1
  42.     Else
  43.         isLast = True
  44.     End If
  45. Next
  46. i = 0
  47. Ret = str
  48. ocErr = False
  49. If i >= n And v0 <> "{E}" Then ocErr = True
  50. i = i + 1
  51. If i >= n And v1 <> "{E}" Then ocErr = True
  52. i = i + 1
  53. If i >= n And v2 <> "{E}" Then ocErr = True
  54. i = i + 1
  55. If i >= n And v3 <> "{E}" Then ocErr = True
  56. i = i + 1
  57. If i >= n And v4 <> "{E}" Then ocErr = True
  58. i = i + 1
  59. If ocErr Then
  60.     Err.Raise 1, "rFormat", "提供參數的數量太多!"
  61. End If
  62. i = 0
  63. Ret = Replace(Ret, "{" & i & "}", v0 & ""): i = i + 1
  64. Ret = Replace(Ret, "{" & i & "}", v1 & ""): i = i + 1
  65. Ret = Replace(Ret, "{" & i & "}", v2 & ""): i = i + 1
  66. Ret = Replace(Ret, "{" & i & "}", v3 & ""): i = i + 1
  67. Ret = Replace(Ret, "{" & i & "}", v4 & ""): i = i + 1
  68. Ret = Replace(Ret, "{" & i & "}", v5 & ""): i = i + 1
  69. Ret = Replace(Ret, "{" & i & "}", v6 & ""): i = i + 1
  70. Ret = Replace(Ret, "{" & i & "}", v7 & ""): i = i + 1
  71. Ret = Replace(Ret, "{" & i & "}", v8 & ""): i = i + 1
  72. Ret = Replace(Ret, "{" & i & "}", v9 & ""): i = i + 1
  73. Ret = Replace(Ret, "{" & i & "}", v10 & ""): i = i + 1
  74. Ret = Replace(Ret, "{" & i & "}", v11 & ""): i = i + 1
  75. Ret = Replace(Ret, "{" & i & "}", v12 & ""): i = i + 1
  76. Ret = Replace(Ret, "{" & i & "}", v13 & ""): i = i + 1
  77. Ret = Replace(Ret, "{" & i & "}", v14 & ""): i = i + 1
  78. Ret = Replace(Ret, "{" & i & "}", v15 & ""): i = i + 1
  79. Ret = Replace(Ret, "{" & i & "}", v16 & ""): i = i + 1
  80. Ret = Replace(Ret, "{" & i & "}", v17 & ""): i = i + 1
  81. Ret = Replace(Ret, "{" & i & "}", v18 & ""): i = i + 1
  82. Ret = Replace(Ret, "{" & i & "}", v19 & ""): i = i + 1
  83. Ret = Replace(Ret, "{" & i & "}", v20 & ""): i = i + 1
  84. Ret = Replace(Ret, "{" & i & "}", v21 & ""): i = i + 1
  85. Ret = Replace(Ret, "{" & i & "}", v22 & ""): i = i + 1
  86. If InStr(Ret, "{E}") > 0 Then
  87.     Err.Raise 1, "rFormat", "提供參數的數量太少!"
  88. End If
  89. rFormat = Ret
  90. End Function

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.