TC官方合作论坛

标题: TC库中没有Split这个函数,我写了一个,分享下~ [打印本页]

作者: 我就喜欢呵呵呵    时间: 2011-12-12 19:04
标题: TC库中没有Split这个函数,我写了一个,分享下~
如题,许多人说,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版本,请将函数定义放在函数调用之前,这个是因为目前内测版本数组功能还未完全做好,各位使用时注意~
同时,希望有人能拿出自己平时多用到的自己写的函数,自己写起来真的不方便,很麻烦,希望各位发扬共享精神,呵呵~

作者: ltsi001    时间: 2011-12-12 19:13
原来是高人,我因矣,沙发?
作者: 我就喜欢呵呵呵    时间: 2011-12-12 19:18
回复 2楼ltsi001的帖子

:share:
互勉互勉,互相学习~
作者: loading    时间: 2011-12-12 20:38
恩,不错,需要。
作者: m13754891441    时间: 2011-12-12 21:18
原来是高人
作者: yangfusheng    时间: 2013-11-24 17:48
爱回帖爱积分,爱TC!!!!!!




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1