TC官方合作论坛

 找回密码
 立即注册
查看: 2862|回复: 7

[功能] 字符串.截取的功能扩展源码

[复制链接]
发表于 2014-2-12 17:37:16 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 贪吃蛇 于 2014-2-13 20:53 编辑

在TC自带的截取功能基础上,支持参数为字符串的情形。欢迎各位大大提意见。
  1. function strsubEx(str,begin,end)
  2.     //功能:在字符串中截取指定区域内的字符串,如果无法确定区域则返回原字符
  3.     //参数:str,原字符串;begin,整数型时是开始位置,字符型时是开始字符(串);end,整数型时是结束位置,字符型时是结束字符(串)
  4.     //示例:strsubEx("abcdefghijklmn","b",5)的返回值是"cde";strsubEx("abcabc","b","a")的返回值是"c"
  5.    
  6.     posL=0 ,posR=0 //左右边界(范围)
  7.     beginType=type.vartype(begin) ,endType=type.vartype(end)
  8.     select(beginType)
  9.         case "整型":
  10.         posL=begin
  11.         case "字符型":
  12.         posL=str.findstr(str,begin)+str.strleng(begin)
  13.         default:
  14.         traceprint("参数beging类型错误,只能是整数型或字符型,字符串原样返回")
  15.         return str
  16.     endselect
  17.     select(endType)
  18.         case "整型":
  19.         posR=end
  20.         case "字符型":
  21.         posR=str.findstr(str.strsub(str,posL,str.strleng(str)),end)+posL//此句原为posR=str.findstr(str,end),多谢小西指点特改正。
  22.         default:
  23.         traceprint("参数end类型错误,只能是整数型或字符型,字符串原样返回")
  24.         return str
  25.     endselect
  26.     if(posL<0 || posR<0)
  27.         traceprint("参数begin或end没找到,字符串原样返回")
  28.         return str
  29.     endif
  30.     return str.strsub(str,posL,posR)
  31. endfunction
复制代码




回复

使用道具 举报

发表于 2014-2-12 17:53:06 | 显示全部楼层
支持一下  多谢分享 哦呵呵
回复 支持 反对

使用道具 举报

发表于 2014-2-12 18:32:03 | 显示全部楼层
看来本意 是想在原来用 位置 定位的基础上增加一个以 字符串 定位来截取所需.
想法不错,值得表扬鼓励.
但是似乎有某方面没有考虑周全.
如果
str="abcabc"
begin="b"
end="a"
结果会如何?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-12 18:58:22 | 显示全部楼层
小西 发表于 2014-2-12 18:32
看来本意 是想在原来用 位置 定位的基础上增加一个以 字符串 定位来截取所需.
想法不错,值得表扬鼓励.
但是 ...

题意是要找b和a之间的c,执行结果却是空,明白了,谢谢指点。
现将第21行的posR=str.findstr(str,end)改为posR=str.findstr(str.strsub(str,posL,str.strleng(str)),end)+posL,使end参数只从begin的右边开始找,就能正确找到c了
回复 支持 反对

使用道具 举报

发表于 2014-2-12 20:03:01 | 显示全部楼层
顶一下。。貌似很强大
回复 支持 反对

使用道具 举报

发表于 2014-2-12 22:06:01 | 显示全部楼层
贪吃蛇 发表于 2014-2-12 18:58
题意是要找b和a之间的c,执行结果却是空,明白了,谢谢指点。
现将第21行的posR=str.findstr(str,end)改 ...

挺不错的,支持一下 你可以看看我的字符串增强库。www.c2014.cc,功能比你这个多不少,需要源码或者帮助可以找我,愿意帮你。你这个截取增加了个mid,我也实现了。~加油 希望你越做越好!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-12 22:12:55 | 显示全部楼层
rainshine 发表于 2014-2-12 22:06
挺不错的,支持一下 你可以看看我的字符串增强库。www.c2014.cc,功能比你这个多不少,需要源码或者帮助 ...

谢谢,你的帖子我看了蛮多,学到不少,已经加群,有不会的还要请教你了
回复 支持 反对

使用道具 举报

发表于 2014-2-13 12:04:20 | 显示全部楼层
贪吃蛇 发表于 2014-2-12 22:12
谢谢,你的帖子我看了蛮多,学到不少,已经加群,有不会的还要请教你了 ...

哦?你的qq是多少?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-19 20:17 , Processed in 0.051284 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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