自写函数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 Sub Command11_Click()
    Dim str As
String
    ‘VB6的字符串索引值是从1开始的,而VB.NET
2010的字符串索引值是从0开始的
    ‘  
从索引值6的位置开始,用123替换2个字符,即:abcde123
    Debug.Print
WinOs.Stuff("abcdefg", 6, 2, "123")
    ‘  
把字符123插入到字符串末尾,即:abcdefg123
    Debug.Print
WinOs.Stuff("abcdefg", Len("abcdefg") + 1, 0, "123")
   
‘   从索引值6的位置开始删除2个字符,即:abcde
    Debug.Print
WinOs.Stuff("abcdefg", 6, 2, vbNullString)
    ‘  
当起始位置为零,当第四个参数为空时,从起始位置开始删除4个字符,即:efg
    Debug.Print
WinOs.Stuff("abcdefg", 0, 4, vbNullString)
   
‘   
起始位置为零,当第三个参数大于零时,且第四个参数不为空,相当于替换,即:123efg
    Debug.Print
WinOs.Stuff("abcdefg", 0, 4, "123")
    ‘   
在g之后插入空字符,即:abcdefg
    Debug.Print WinOs.Stuff("abcdefg", 8,
0, vbNullString)
    ‘   
在a之前插入空字符,即:abcdefg
    Debug.Print WinOs.Stuff("abcdefg", 0,
0, vbNullString)
   
‘数据越位,替换不存在的位置,将输出空值
    Debug.Print WinOs.Stuff("abcdefg", 8,
1, vbNullString)
    ‘当第二个参数小于零时,默认等于0,当第三个参数小于零时,默认等于0
,即:abcdefg
    Debug.Print WinOs.Stuff("abcdefg", -1, -1,
vbNullString)
   
‘把郭插入到索引值6的位置,即:abcde郭fg,插入位置为负值时,默认为零
    Debug.Print
WinOs.Stuff("abcdefg", 6, -1, "郭")
   
‘把字符串中的郭删除    结果:"你好,卫"
    Debug.Print
WinOs.Stuff("你好,郭卫", InStrRev("你好,郭卫", "郭"), 1,
vbNullString)
    str = "你好,郭卫,吃了吗"
   
‘找到指定的字符,并把它删除    结果:"你好,吃了吗"
    Debug.Print
WinOs.Stuff(str, InStrRev(str, "郭"), Len("郭卫,"),
vbNullString)
    ‘在"郭卫,"之后插入字符"早上好,":
结果:“你好,郭卫,早上好,吃了吗”
    Debug.Print WinOs.Stuff(str,
InStrRev(str, "郭") + Len("郭卫,"), 0, "早上好,")

End Sub

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 Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

‘VB6的字符串索引值是从1开始的,而VB.NET
2010的字符串索引值是从0开始的

‘从索引值5的位置开始,用123替换2个字符,即:abcde123
       
Debug.Print(stuff("abcdefg", 5, 2,
"123"))
        ‘  
把字符123插入到字符串末尾,即:abcdefg123
       
Debug.Print(stuff("abcdefg", "abcdefg".Length, 0,
"123"))
        ‘  
从索引值5的位置开始删除2个字符,即:abcde
       
Debug.Print(stuff("abcdefg", 5, 2,
vbNullString))
        ‘  
当起始位置为零,当第四个参数为空时,从起始位置开始删除4个字符,即:efg
       
Debug.Print(stuff("abcdefg", 0, 4,
vbNullString))
        ‘   
起始位置为零,当第三个参数大于零时,且第四个参数不为空,相当于替换,即:123efg
       
Debug.Print(stuff("abcdefg", 0, 4,
"123"))
        ‘   
在字符串末尾插入空字符,即:abcdefg
       
Debug.Print(stuff("abcdefg", 8, 0,
vbNullString))
       
‘数据越位,替换不存在的位置,将输出空值
       
Debug.Print(stuff("abcdefg", 8, 1,
vbNullString))
       
‘当第二个参数小于零时,默认等于0,当第三个参数小于零时,默认等于0
,即:abcdefg
       
Debug.Print(stuff("abcdefg", -1, -1,
vbNullString))
       
‘把郭插入到索引值5的位置,即:abcde郭fg,插入位置为负值时,默认为零
       
Debug.Print(stuff("abcdefg", 5, -1,
"郭"))
        ‘把字符串中的郭删除   
结果:"你好,卫"
       
Debug.Print(stuff("你好,郭卫", "你好,郭卫".IndexOf("郭"), 1,
""))
       
‘找到指定的字符,并把它删除   
结果:"你好,吃了吗"
        Dim str As String =
"你好,郭卫,吃了吗"
        Debug.Print(stuff(str,
str.IndexOf("郭卫,"), "郭卫,".Length,
""))
        ‘在"郭卫,"之后插入字符:
结果:“你好,郭卫,早上好,吃了吗”
       
Debug.Print(stuff(str, str.IndexOf("郭卫,") + "郭卫,".Length, 0, "早上好,"))

End sub

如果大家对此函数感兴趣,请到http://blog.sina.com.cn/s/blog_49f7bc810102vwzm.html 下载蓝凤凰-魔灵函数库使用。

时间: 2024-10-26 06:49:18

自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解的相关文章

函数return 详解

1. 函数为什么要return : 目的:为了调用,面向对象编程如果没有return将毫无意义,将变成了类似c的面向过程的上下文执行 2. return的常用形式 1.不写return:默认返回None 2.只写return:只有结束函数体代码的效果,返回None 3.写return None :与只写return的效果相同 4.return返回一个值: 可以将返回的结果,当做一个变量值来使用 5.return返回多个值: 1.将返回的多个值,默认存入元组返回 2.函数的返回值不想被修改 3.可

获取VB类模块成员函数指针(转)

最近在做一些VB6.VBA的项目,被如何获取类模块中的函数指针这个问题所困扰,收集整理后,有2分资料值得收藏,特将关键部分留存,以备后续查找. 参照连接1:http://www.cnblogs.com/pctgl/articles/1352916.html 参照连接2:http://blog.csdn.net/lyserver/article/details/4224676 以下是链接1中的部分内容: 1. 函数地址 = GetClassProcAddress ( 指定为哪个函数 [上面解释],

c语言:用fgetc函数从键盘逐个输入字符,用fputc函数写到磁盘文件

用fgetc函数从键盘逐个输入字符,用fputc函数写到磁盘文件. 解:程序: #include<stdio.h> #include<stdlib.h>//exit使程序终止 int main() { FILE* fp; char ch, filename[10]; printf("请输入所用的文件名:"); scanf("%s", &filename); if ((fp = fopen(filename, "w"

Python open()函数文件打开、读、写操作详解

一.Python open()函数文件打开操作 打开文件会用到open函数,标准的python打开文件语法如下:open(name[,mode[,buffering]])open函数的文件名是必须的,而模式和缓冲参数都是可选的.比如说有个a.txt的文本文件,存放在c:\text下,那么你要打开它可以这样操作:>>>x = open(r 'c:\text\a.txt')用读的模式打开这个路径下的对应文本文件,如果要打开对像不存在,程序会报错. 二.open()函数文件打开模式参数常用值有

从头开始写项目Makefile(十):make内嵌函数及make命令显示

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 这一节我们讲一下make的函数,在之前的章节已经讲到了几个函数:wildcard.patsubst.notdir.shell等.一般函数的调用格式如下: $(funcname arguments) 或 $(funcname arguments) 其中funcname是需要调用函数的函数名称,应该是make内嵌函数:arguments是函数参数,参数和函数名之间使

C++ virtual函数重写,在继承的时候没有在函数前写virtual关键字也依然是虚函数吗?

比如: 1 class Base 2 { 3 Base() {}; 4 ~Base() {}; 5 virtual void Init(); 6 }; 7 8 class Derived:public Base 9 { 10 virtual void Init();//virtual是必须的吗? 11 }; 答案:c++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数.因此,在子类从新声明该虚函数时,可以加,也可以不加,但习惯上每一层声明函数时都加virtual,使程序

Callback函数详解(我感觉,回掉函数的本质是函数指针,在业务做循环处理的时候,调用一下通知外部)

2010年的最后一天了,转载一篇自己认为还不错的文章与大家分享.希望对大家有所帮助. 一,回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢? 使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数. 而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利

php socket函数详解

转自:http://blog.163.com/[email protected]/blog/static/2889641420138213514298/ 最近在用socket实现服务端向客户端主动推送消息函数名 描述socket_accept() 接受一个Socket连接socket_bind() 把socket绑定在一个IP地址和端口上socket_clear_error() 清除socket的错误或最后的错误代码socket_close() 关闭一个socket资源socket_connec

delphi中的Format函数详解

首先看它的声明:[[email protected]][@21ki!] function Format(const Format: string; const Args: array of const): string; overload;[[email protected]][@21ki!] 事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的,[[email protected]][@21ki!]但并不多用,所以这里只对第一个介绍:[[email protect