'*************************************************************************

'**模 块 名:Join函数 及Split函数精解示例
'**说    明:蓝凤凰设计商城 浴火凤凰-郭卫 | 蓝凤凰-魔灵 | 郭卫-icecept
'**创 建 人:浴火凤凰-郭卫
'**日    期:2015年10月11日  17:49:52
'**修 改 人:浴火凤凰-郭卫
'**日    期:
'**描    述:QQ:493405998 | 微信\旺旺:icecept
'**版    本:V1.0.0 | http://blog.sina.com.cn/icecept
'*************************************************************************
 
'你是否遇到过需要把数组的内容保存到注册表、文件或者控件的Tag属性中?在VB6以及.NET中,Join函数和Split函数为你提供了实现上述功能的简便方法?这两个函数还有把一维数组导入到字符串以及从字符串恢复数组的功能?
'Join函数的参数为一个数组和分隔符(分隔符可选),它把数组的所有元素导入到字符串,元素间用分隔符分隔,并返回该字符串。
 
'●Join函数用法:传回字符串 = Join(原始数组, 分隔字符串)
 
'描述'
'返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
'语法
'Join(list[, delimiter])
'Join函数语法有如下几部分:
'List 必需的?包含被连接子字符串的一维数组?
'delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
'---------------------------------------------------------------------------------------------------
 
'●Split函数用法:传回数组 = Split(原始字串[, 要找的字串][, 拆成几个数组][,比较方式])
'描述
'返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
'语法
'Split(expression[, delimiter[, count[, compare]]])
'Split函数语法有如下几部分:
'expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
'delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
'count 可选的。要返回的子字符串数,-1表示返回所有的子字符串。
'compare 可选的。数字值,判别子字符串时使用的比较方式(就是表明是否区分大小写):执行二进制比较(区分),执行文字比较(不区分)
 
'设置值
'compare参数的设置值如下:
'     常数             值             描述
'vbUseCompareOption    -1    用Option Compare语句中的设置值执行比较。
'vbBinaryCompare        0    执行二进制比较。
'vbTextCompare          1    执行文字比较。
'vbDatabaseCompare      2    仅用于Microsoft Access。基于您的数据库的信息执行比较。
 
'Join函数和Split函数在需要把数组内容转化为字符串并从字符串恢复数组的情况下显得非常有用。例如,把表格各个栏的宽度转化为字符串保存到注册表,并从注册表恢复栏宽。使用这两个函数会简化保存和处理数组内容。
 
Option Explicit
 
Private Sub command1_Click()
    Dim MyStr As String
    MyStr = "1234567123456712345"
    MyStrs = Split(MyStr, "67")
    For Each Strs In MyStrs
        Debug.Print Strs
    Next
End Sub
'●输出结果:"12345"、"12345"、"12345"
'
'=================================================================
'这个VB程序是让求10个学生的考试成绩的平均分..
'比如95 85 70 75 80 90 60 65 95 100
'这10个人的分数的平均分...
 
Private Sub Command2_Click()
    Dim A$(), i As Long, intB As String, s As Integer
    If Dir("d:\平均分.dat") = vbNullString Then
        Open "d:\平均分.dat" For Output As #1
        Print #1, "95 85 70 75 80 90 60 65 95 100"
        Close #1
    End If
    Open "d:\平均分.dat" For Input As #1
    Input #1, intB
    Close #1
    A = Split(intB, Space$(1))
    For i = 0 To UBound(A)
        Debug.Print A(i); Space$(1);
        s = s + A(i)
    Next i
    Debug.Print ",10个学生的平均成绩是 :" & s / 10
End Sub
 
Private Sub Command3_Click()
    Dim AString As String
    Dim r() As String                      '把变量按照“,”分割出来的数组
    AString = "高级,中级,低级,先进"
    r = Split(AString, ",")               '把字符串以“,”分割存入数组
    Debug.Print "数组中第三个数据是:" & r(2)
 
    '以另一种方式输出
    '当小括号中写0时,返回数组中第一个元素,小括号中写1时返回数组中第二个元素。依此类推,用这种写法返回数据时,
    '必须用一个空格把字符串分开,其它字符仅当做一个数据。因为省略要的字符串时,默认为空格。例:
    Dim AString As String
    AString = "高级 中级 低级 先进"
    Debug.Print Split(AString)(0)    '与Debug.Print Split(AString,space(1))(0)相同
    Debug.Print Split(AString)(1)
    Debug.Print Split(AString)(2)
    Debug.Print Split(AString)(3)
 
    Debug.Print "以下是错误的用法-------------------------------------"
 
    AString = "高级,中级,低级,先进"
    Debug.Print Split(AString)(0) '这里会产生错误,因为要找的字符串是“,”,而省略要找的字符串后
    Debug.Print Split(AString)(1) '默认分界符是空格,而此程序段是“,”所以只返回 高级,中级,低级,先进  仅当作一个串
    Debug.Print Split(AString)(2) '其它三个都产生下标越界错误
    Debug.Print Split(AString)(3)
End Sub
 
'================================================================
 
Private Sub Command4_Click()
    Dim s As String, T() As String
    s = "1A2A3A4A5A6A7"
    'count 用途示例,返回四个字符串
    '返回值:以A为分割符,最后一个把剩余的当成一个字符串返回
    '1
    '2
    '3
    '4A5A6A7
    T() = Split(s, "A", 4)
    Debug.Print Join(T, vbCrLf)
 
End Sub
 
Private Sub Command5_Click()
    Dim s As String, T() As String
    s = "1A2A3A4A5A6A7"
    'compare 用途示例,忽略大小写,默认为:vbBinaryCompare 大小写不同
    Debug.Print "忽略大小写" & vbCrLf
    T() = Split(s, "a", , vbTextCompare)
    Debug.Print Join(T, vbCrLf)
    '返回值:
    '1
    '2
    '3
    '4
    '5
    '6
    '7
End Sub
 
Private Sub Command6_Click()
    Dim s As String, T() As String
    s = "1A2A3A4A5A6A7"
    'compare 用途示例,忽略大小写,默认为:vbBinaryCompare 大小写不同
    Debug.Print "不忽略大小写" & vbCrLf
    T() = Split(s, "a", , vbBinaryCompare)
    Debug.Print Join(T, vbCrLf)
    '返回值:
    '1A2A3A4A5A6A7
End Sub
 
Private Sub Command7_Click()
    Dim i As Integer            '循环变量
    Dim s As String
    Dim d As String
    Dim iCount As Integer       '总个数
    Dim arr() As String
    s = 567904       '字符串1
    d = 574          '字符串2
    For i = 1 To Len(s)
        arr = Split(s, Mid$(d, i, 1))
        iCount = iCount + UBound(arr)
    Next i
    MsgBox "在 " & d & " 中有 " & iCount & " 个字符与 " & s & " 中的字符相同."
End Sub
 
Private Sub Command8_Click()
    Dim strTest1() As Variant, strIns() As Variant       '这是两个需要合并的原数组,strIns 是需要插入strTest1数组的数组
    'T1-T4为中间变量
    Dim T1 As String, T2 As String, T3 As String, T4 As String
    '分段字符串时的焦点位置
    Dim Position As Integer, Sss As String, strSource() As String
    '用Array给数组赋初值时,数组必须是 Variant类型
    strTest1 = Array("A", "B", "0", "C", "1", "2", "3", "4", "5", "D")    '原数组一数据
    strIns = Array("V", "XM", "U", "1")    '原数组二数据
 
    T1 = Join(strTest1(), ",")      '把原数组一用“,”转换成字符串存入T1变量
    T2 = Join(strIns(), ",")        '同样把原数组二用“,”转换成字符串存入T2变量
    Position = InStr(T1, "2")       '找到数组二要插入的位置
    T3 = Mid$(T1, 1, Position + 1)  '取字符串T1从头开始到插入位置加一处,存入T3字符串变量
    T4 = Mid$(T1, Position + 1)     '取字符串T1从插入位置加一处,一直到未尾的所有字符存入T4变量
    Sss = T3 & T2 & T4              '把三个字符串变量按要求合并存入sss变量
    '统计原数组一的维数,等号两端的类型必须一致
    strSource = Split(Sss, ",")
    Debug.Print "合并前的两个数组:" & vbCrLf
    Debug.Print "strTest1:" & Join(strTest1, Space$(1)) & vbCrLf
    Debug.Print "strIns:" & Join(strIns, Space$(1)) & vbCrLf
    Debug.Print "两个数组合并后的统一数组strSource:" & vbCrLf
    Debug.Print Join(strSource, Space$(2))
 
    '合并前的两个数组:
    '
    'strTest1:A B 0 C 1 2 3 4 5 D
    '
    'strIns:V XM U 1
    '
    '两个数组合并后的统一数组strSource:
    '
    'A  B  0  C  1  2  V  XM  U  1  3  4  5  D
End Sub
 
Private Sub Command9_Click()
    Dim aaa(3) As String, bbb(3) As String
    Dim Sss As String
    aaa(0) = "111"
    aaa(1) = "222"
    aaa(2) = "333"
    aaa(3) = "444"
    bbb(0) = "vvv"
    bbb(1) = "ccc"
    bbb(2) = "xxx"
    bbb(3) = "zzz"
    Sss = Join(aaa) & Space$(1) & Join(bbb)
    MsgBox Sss
End Sub

Join函数 及Split函数精解示例的更多相关文章

  1. Replace 删除、替换函数精解示例

    '************************************************************************* '**模 块 名:Replace函数精解示例 '* ...

  2. Filter 数组过滤函数精解示例

    '************************************************************************* '**模 块 名:Filter 数组过滤函数精解示 ...

  3. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  4. js中的join(),reverse()与 split()函数用法解析

    <script> /* * 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组.此函数可以将数组倒序排列 * 2:arrayObject ...

  5. python strip() 函数和 split() 函数的详解及实例

    strip是删除的意思:split则是分割的意思.strip可以删除字符串的某些字符,split则是根据规定的字符将字符串进行分割. 1.Python strip()函数 介绍 函数原型 声明:s为字 ...

  6. @JsonCreator自定义反序列化函数-JSON框架Jackson精解第5篇

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  7. strip()函数和 split()函数

    一:python strip()函数介绍 函数原型:strip可以删除字符串的某些字符 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 ...

  8. Python的join()函数和split()函数

    join()方法 ------------------------------------------------------------------------------------------- ...

  9. python strip()函数和Split函数的用法总结

    strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串.不能删除中间的字符或是字符串. s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除 ...

随机推荐

  1. PHP中的变量与常量详解

    几乎所有的编程语言都会涉及到变量和常量这两个概念,PHP也不例外.本节将介绍PHP语言中的变量和常量的应用方法. 一.什么是变量和常量 在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不 ...

  2. Shell入门教程:Shell变量

    变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...

  3. 使用php+swoole对client数据实时更新(上)

    如果想对一个列表做实时的更新,传统的做法是采用轮询的方式.以web为例,通过Ajax定时请求服务端然后获取数据显示在页面.这种方式实现简单,缺点就是浪费资源. HTTP1.1新增加了对websocke ...

  4. ssh框架整合-NoClassDefFoundError-NoSuchMethodError-遁地龙卷风

    (-1)写在前面 spring2.0.struts1.2.hibernate3.0.myeclipse8.5.tomcat6.0,整合之中出现了很多问题,前几天忙着整理毕业论文的资料,时间腾出来了,总 ...

  5. JS常见错误和分析

    列举一些在前端开发中遇到的一些错误信息和解决办法 错误信息 解决办法 Uncaught SyntaxError: Unexpected token o 使传入的字符串不是符合严格的JSON格式会抛出异 ...

  6. MATLAB的SAVE命令动态批量保存TXT文件

    1.使用save(): for i=1:6 str=[num2str(i),’.txt’]; m=[1 2; 3 4]; save(str,’m’,’-ascii’);%注意m的单引号,一定记得加上, ...

  7. virtualbox之usb设备的分配

    来源:http://www.cnblogs.com/fsjohnhuang/p/3987545.html 首先下载安装virtualbox的扩展包,因为box原本不支持usb设备.www.virtua ...

  8. [Android Pro] ScrollView嵌套RecyclerView时滑动出现的卡顿

    reference to : http://zhanglu0574.blog.163.com/blog/static/113651073201641853532259/ ScrollView嵌套Rec ...

  9. linux下使用automake工具自动生成makefile文件

    linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...

  10. Android之EACCES (Permission denied)与Permission denied异常探密

    话说,Accipiter君,最近又开始怒学Android了,记得刚开始还是09年学的,现在的手机还是华为出的最早的一款Android手机C8500,那时候就想好好学习Android,赚点小钱,可是~~ ...