自寫函數VB6 STUFF函數 和 VB.net 2010 STUFF函數 詳解
'*************************************************************************
'**模
塊 名:自寫函數VB6 STUFF函數 和 VB.net 2010 STUFF函數 詳解
'**說 明:藍鳳凰設計商城
浴火鳳凰-郭衛 | 藍鳳凰-魔靈 | 郭衛-icecept
'**創 建 人:浴火鳳凰-郭衛
'**日
期:2015年10月10日 23:13:55
'**修 改 人:浴火鳳凰-郭衛
'**日
期:
'**描 述:QQ:493405998 |
微信\旺旺:icecept
'**版 本:V1.0.0 | http://blog.sina.com.cn/icecept
'*************************************************************************
'刪除,替換,插入字符 VB6 STUFF函數
Public Function stuff(ByVal StrSourceA As String, ByVal IntBeginPositionB As Integer, ByVal ModifyCharNumberC As Integer, ByVal ModifyCharD As String) As String
…………
End Function
'--------------------------------------------------------------------------------------
'stuff函數:stuff("原字符串","起始位置","插入(C=0)、替換(C>1)、刪除(D="")的字符數","要插入(C=0)、替換(C>1)、刪除(D="")的字符"
'重要提示因VB.6字符串的索引值是從1開始,本函數所有操作都是從1開始,字符串最多索引值是字符串總個數
'StrSourceA
是原字符串,
'IntBeginPositionB是起始位置,IntBeginPositionB=0 默認IntBeginPositionB=1
'ModifyCharNumberC是要替換?刪除?插入的的字符數?
'ModifyCharD是要修改的字符串,ModifyCharD=""時可刪除指定字符。
'ModifyCharNumberC=0
可插入指定字符,當IIntBeginPositionB <= Len(StrSourceA) + 1 時,在字符串位置的Len(StrSourceA) +
1 之間插入字符
'ModifyCharNumberC > 0 和 ModifyCharD 不等于空時,可替換指定字符
----------------------------------------------------------------------------------------------
'刪除,替換,插入字符 VB.net 2010 STUFF函數
Public Class Form1
Public Function stuff(ByVal StrSource As String, ByVal IntBeginPosition As Integer, ByVal ModifyPosition As Integer, ByVal StrDestination As String) As String
………………
End Function
End
Class
'刪除,替換,插入字符
'stuff函數:stuff("原字符串","起始位置(從零開始的索引值)","替換、刪除的字符數(當此參數為零時進行插入操作)","要插入、替換字符(當此參數為空時,刪除字符)"
'重要提示 因VB.net
2010字符串的索引值是從零開始,本函數所有的操作都是從0開始,字符串最多索引值是字符串總個數減一
'StrSourceA 是原字符串.
IntBeginPositionB是起始位置,
默認為零,IntBeginPositionB小于零時,默認為0
'ModifyCharNumberC是要替換?刪除?插入的的字符數,當ModifyCharNumberC小于零時,默認為0
'ModifyCharD是要修改的字符串,ModifyCharD=""可刪除指定字符。
'ModifyCharNumberC=0可插入指定字符,當第二個參數>=0,小于length時,在字符串位置的length之間插入字符
'IntBeginPositionB>=0
or
IntBeginPositionB<原字串.length且ModifyCharNumberC=0時,strD=""時,StrSourceA保持原樣不變,(相當于把一個空字符插入到相應的字符處)
'IntBeginPositionB>=0
or
IntBeginPositionB<原字串.length時,ModifyCharNumberC>0,strD<>""可替換指定字符
'========================================================
我非常喜歡編寫程序,因為我是學 會計電算化的,所以對Foxbase情有獨衷,后來轉型為VB,一至到至今用的VB.net 2010 我一直用著這個函數,功能非常強大,一個函數就可以'刪除,替換,插入字符。不過我覺得其它編程語言的 Stuff函數太不好理解,我就按我理解的用VB6和VB.net 2010分別編寫了Stuff函數,下面功能介紹如下。
程序示例:VB6 STUFF函數
Private ErrDescription As String '定義越位錯誤信息
Private Sub Command11_Click()
Dim str As String
'VB6的字符串索引值是從1開始的,而VB.NET 2010的字符串索引值是從0開始的
'從第六個字符開始,用123替換2個字符
Debug.Print ErrDescription & "|" & Stuff("abcdefg", 6, 2, "123")
'把123插入到原字符串未尾
Debug.Print ErrDescription & "|" & Stuff("abcdefg", Len("abcdefg") + 1, 0, "123")
'從第六個字符開始,刪除兩個字符
Debug.Print ErrDescription & "|" & Stuff("abcdefg", 6, 2, vbNullString)
'起始位置是零,默認為一,從第一個字符開始,刪除四個字符
Debug.Print ErrDescription & "|", Stuff("abcdefg", 0, 4, vbNullString)
'起始位置是零,默認為一,用123替換從一開始的四個字符
Debug.Print ErrDescription & "|", Stuff("abcdefg", 0, 4, "123")
'起始位置小于零,默認為一,字符數小于零默認為0即插入,把123插入到原字符串原字符串前面
Debug.Print ErrDescription & "|", Stuff("abcdefg", -1, -1, "123")
'起始位置等于0,默認為一,字符數為零,即插入,,把123插入到原字符串原字符串前面
Debug.Print ErrDescription & "|", Stuff("abcdefg", 0, 0, "123")
'起始位置等于0,默認為一,字符數為零,即插入,把空字符串插入到原字符串的開頭位置
Debug.Print ErrDescription & "|", Stuff("abcdefg", 0, 0, vbNullString)
'起始位置小于0,默認為一,字符數小于零默認為零,即插入,把空字符串插入到原字符串的開頭位置
Debug.Print ErrDescription & "|", Stuff("abcdefg", -1, -1, vbNullString)
'把空字符串插入到原字符串的末尾
Debug.Print ErrDescription & "|", Stuff("abcdefg", Len("abcdefg") + 1, 0, vbNullString)
'把郭插入到第六個字符處
Debug.Print ErrDescription & "|", Stuff("abcdefg", 6, -1, "郭")
'查找逗號并刪除
Debug.Print ErrDescription & "|", Stuff("你好,郭衛", InStrRev("你好,郭衛", ","), 1, vbNullString)
str = "你好,郭衛,吃了嗎"
'查找郭的位置,并刪除從它開始的三個字符
Debug.Print ErrDescription & "|", Stuff(str, InStrRev(str, "郭"), Len("郭衛,"), vbNullString)
'查找郭衛,的位置,并把早上好,插入到它的后面
Debug.Print ErrDescription & "|", Stuff(str, InStrRev(str, "郭") + Len("郭衛,"), 0, "早上好,")
'------------以下是數據越位信息-----------------’
'起始位置大于原字符串長度,報錯
Debug.Print ErrDescription & "|", Stuff("abcdefg", 9, 0, vbNullString)
End Sub
運行結果:
Stuff("abcdefg",6,2,"123")|abcde123
Stuff("abcdefg",8,0,"123")|abcdefg123
Stuff("abcdefg",6,2,"")|abcde
Stuff("abcdefg",0,4,"")| efg
Stuff("abcdefg",0,4,"123")| 123efg
Stuff("abcdefg",-1,-1,"123")| 123abcdefg
Stuff("abcdefg",0,0,"123")| 123abcdefg
Stuff("abcdefg",0,0,"")| abcdefg
Stuff("abcdefg",-1,-1,"")| abcdefg
Stuff("abcdefg",8,0,"")| abcdefg
Stuff("abcdefg",6,-1,"郭")| abcde郭fg
Stuff("你好,郭衛",3,1,"")| 你好郭衛
Stuff("你好,郭衛,吃了嗎",4,3,"")| 你好,吃了嗎
Stuff("你好,郭衛,吃了嗎",7,0,"早上好,")| 你好,郭衛,早上好,吃了嗎
Stuff("abcdefg",9,0,"")| Stuff("abcdefg",9,0,"")數據越位
Private Sub Form_Click()
Dim str1 As
String
Dim i As Integer, j As
Integer
str1 = "6-15-8-9-5"
For i =
1 To UBound(Split(str1, "-"))
j =
InStr(1, str1, "-")
str1 =
stuff(str1, j, 1, ":" & i & "=")
Next
Debug.Print str1
'6:1=15:2=8:3=9:4=5
End Sub
Private Sub command1_Click()
Dim str1 As
String
str1 = Text1.Text
Dim i As
Integer, j As Integer
For i = 1 To UBound(Split(str1,
"*"))
j = InStr(1, str1,
"*")
str1 = stuff(str1, j, 1,
vbNullString)
Next
Text1.Text =
str1 '1234567
End Sub
Private Sub Command2_Click()
Dim s As String, i As
Integer
s = "ABCDEF"
Text2.Text =
vbNullString
For i = Len(s) To 3 Step
-1
s = stuff(s, 3, 1,
vbNullString)
'字符串每次從第三個字符起取一個刪除
Text2.Text =
Text2.Text & "s=" & s & vbCrLf
Next
's = ABDEF
's =
ABEF
's = ABF
's = AB
End Sub
Private Sub Form_Load()
Text1.Text =
"1**2*3***4***56**7"
Text2.Text = "ABCDEF"
End
Sub
‘-------------------------------------------------------------------------------VB.net 2010 STUFF函數
Private ErrDescription As String '定義越位錯誤信息
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'VB6的字符串索引值是從1開始的,而VB.NET 2010的字符串索引值是從0開始的
Dim Strxx As String = Stuff("abcdefg", 5, 2, "123")
' 從索引值5的位置開始,用123替換2個字符,即:abcde123
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", "abcdefg".Length, 0, "123") '字符個數,正好等于字符最后位置的索引值’
' 把字符123插入到字符串末尾,即:abcdefg123
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 0, 0, "123")
' 把字符123插入到字符串開頭,即:123abcdefg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 0, 0, vbNullString)
'以下照原樣輸出即:abcdefg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = (Stuff("abcdefg", -1, -1, vbNullString))
'當第二個參數小于零時,默認等于0,當第三個參數小于零時,默認等于0 ,照原樣輸出。即:abcdefg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = (Stuff("abcdefg", -1, -1, "123"))
'當第二個參數小于零時,默認等于0,當第三個參數小于零時,默認等于0 ,插入到原字符串最前。即:123abcdefg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 5, -1, "郭")
'把郭插入到索引值5的位置,即:abcde郭fg,插入位置為負值時,默認為零
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 5, 2, vbNullString)
' 從索引值5的位置開始刪除2個字符,即:abcde
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 0, 4, vbNullString)
' 當起始位置為零,當第四個參數為空時,從起始位置開始刪除4個字符,即:efg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("abcdefg", 0, 4, "123")
' 起始位置為零, 當第三個參數大于零時,且第四個參數不為空,為替換,即:123efg
Debug.Print(ErrDescription & "|" & Strxx)
Strxx = Stuff("你好,郭衛", "你好,郭衛".IndexOf(","), 1, "")
'把字符串中的郭刪除 結果:"你好,衛"
Debug.Print(ErrDescription & "|" & Strxx)
'找到指定的字符,并把它刪除 結果:"你好,吃了嗎"
Dim str As String = "你好,郭衛,吃了嗎"
str = Stuff(str, str.IndexOf("郭衛,"), "郭衛,".Length, "")
Debug.Print(ErrDescription & "|" & str)
str = Stuff(str, str.IndexOf("郭衛,") + "郭衛,".Length, 0, "早上好,")
'在"郭衛,"之后插入字符: 結果:“你好,郭衛,早上好,吃了嗎”
Debug.Print(ErrDescription & "|" & str)
'------------以下是數據越位信息-----------------’
str = Stuff("abcdefg", "abcdefg".Length + 1, 0, "123")
' 把字符123插入到原字符串長度+1,將輸出數據越位信息
Debug.Print(ErrDescription & "|" & str)
End sub
運行結果:
Stuff("abcdefg",5,2,"123")|abcde123
Stuff("abcdefg",7,0,"123")|abcdefg123
Stuff("abcdefg",0,0,"123")|123abcdefg
Stuff("abcdefg",0,0,"")|abcdefg
Stuff("abcdefg",-1,-1,"")|abcdefg
Stuff("abcdefg",-1,-1,"123")|123abcdefg
Stuff("abcdefg",5,-1,"郭")|abcde郭fg
Stuff("abcdefg",5,2,"")|abcde
Stuff("abcdefg",0,4,"")|efg
Stuff("abcdefg",0,4,"123")|123efg
Stuff("你好,郭衛",2,1,"")|你好郭衛
Stuff("你好,郭衛,吃了嗎",3,3,"")|你好,吃了嗎
Stuff("你好,吃了嗎",2,0,"早上好,")|你好早上好,,吃了嗎
Stuff("abcdefg",8,0,"123")|Stuff("abcdefg",8,0,"123")數據越位
如果大家對此函數感興趣,請到http://blog.sina.com.cn/s/blog_49f7bc810102vwzm.html 下載藍鳳凰-魔靈函數庫使用。

浙公網安備 33010602011771號