TC官方合作论坛

 找回密码
 立即注册
查看: 2310|回复: 5

[学习心得] TC库中没有Split这个函数,我写了一个,分享下~

[复制链接]
发表于 2011-12-12 19:04:04 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如题,许多人说,TC库中没有Split函数,很不方便,在2.006内测版本可用数组之际,我就自己写了一个,欢迎各位拿去使用,免费哦~~~




  1. //功能说明:Split函数功能主要是从一个以str2为分界符的字符串str1中,得到一个数组
  2. //举例,str1="(111,123)-(22,123)-(222,213)-(0,0)"
  3. // str2 = "-"
  4. // string[] myString //定义一个数组
  5. // 那么调用函数 myString = Split(str1,str2)
  6. // myString[0] = "4" //myString[0]表示得到了几个子字符串,这里得到了4个
  7. // myString[1] = (111,123)
  8. // myString[2] = (22,123)
  9. // myString[3] = (222,213)
  10. // myString[4] = (0,0)
  11. // 若str1或者str2为空,则返回的数组长度为1,内容为"-1",比如 myString = Split("",""),则myString[0] = "-1"
  12. // 若str1或者str2为空,则返回的数组长度为1,内容为"-1",比如 myString = Split("123","1234")
  13. //则myString[0] = "-1"



  14. function string[] Split(string str1,string str2)
  15.     int str1Len = str.strleng(str1)
  16.     int str2Len = str.strleng(str2)
  17.    if (str1Len == 0 || str2Len == 0 || str1Len<str2Len)
  18.       string[] myString = string[2]
  19.       myString[0] = "-1"
  20.       return myString
  21.    endif

  22.    string[] myString
  23.    int arrayLen = str1Len/str2Len
  24.    if (arrayLen < 100)
  25.       myString = string[100]
  26.    else
  27.       myString = string[1000]
  28.    endif

  29.    int index = 0
  30.    int i = 1
  31.    string tempStr1 = str1
  32.    int tempStr1Len = 0
  33.    while(true)
  34.    index = str.findstr(tempStr1,str2)
  35.    if(index == -1)
  36.       if (tempStr1 != "")
  37.          myString[i] = tempStr1
  38.       endif

  39.        myString[0] = convert.inttostr(i-1)
  40.       return myString
  41.    endif

  42.    if(index == 0)
  43.       tempStr1 = str.strcut(tempStr1,str2Len,true)
  44.    else
  45.       myString[i] = str.strsub(tempStr1,0,index)
  46.       i = i + 1
  47.       tempStr1 = str.strcut(tempStr1,str2Len+index,true)
  48.    endif

  49.    endwhile
  50. endfunction
复制代码


经过我的初步测试是没有错,不过各位要是想拿去用的话,还是自己测试一下~
这个只是支持最新的内测版本,带有数组功能的版本~
若是用2.03版本,请自己将数组变换为队列~
若是用的2.006版本,请将函数定义放在函数调用之前,这个是因为目前内测版本数组功能还未完全做好,各位使用时注意~
同时,希望有人能拿出自己平时多用到的自己写的函数,自己写起来真的不方便,很麻烦,希望各位发扬共享精神,呵呵~
回复

使用道具 举报

发表于 2011-12-12 19:13:37 | 显示全部楼层
原来是高人,我因矣,沙发?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-12 19:18:06 | 显示全部楼层
回复 2楼ltsi001的帖子

:share:
互勉互勉,互相学习~
回复 支持 反对

使用道具 举报

发表于 2011-12-12 20:38:51 | 显示全部楼层
恩,不错,需要。
回复 支持 反对

使用道具 举报

发表于 2011-12-12 21:18:48 | 显示全部楼层
原来是高人
回复 支持 反对

使用道具 举报

发表于 2013-11-24 17:48:21 | 显示全部楼层
爱回帖爱积分,爱TC!!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-17 17:03 , Processed in 0.037964 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表