| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3748 人关注过本帖, 1 人收藏
标题:VF里有没有可以把有分隔符的字符串放入数组的函数
只看楼主 加入收藏
chenlingxiao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-5-20
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:17 
VF里有没有可以把有分隔符的字符串放入数组的函数
VF里有没有可以把有分隔符的字符串放入数组的函数?如1,1,2,3,4,5,6,7
搜索更多相关主题的帖子: 字符串 
2012-05-24 21:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
自己写的什么都有

授人以渔,不授人以鱼。
2012-05-24 21:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
看错题意了,改正如下,但方法是一样的。
只有你想不到的,没有VFP做不到的,可能有点夸张吧。
程序代码:
AA="1,1,2,3,4,5,6,7"
AA=CHRTRANC(AA,",","")
LOCAL ARR(LEN(AA))
ARR=""
FOR I=1 TO LEN(AA)
    ARR(I)=SUBSTRC(AA,I,1) &&将AA中的数字分别存入数组中
    ? ARR(I)
ENDFOR

VFP9.0中的ALINES()
示例:
程序代码:
AA="1,1,2,3,4,5,6,7"
FOR I=1 TO ALINES(ARR,AA,",")
    ? ARR(I)
ENDFOR



[ 本帖最后由 sdta 于 2012-5-24 22:51 编辑 ]

坚守VFP最后的阵地
2012-05-24 21:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
他说的是要把字符串中的每一项分割了放在数组中

授人以渔,不授人以鱼。
2012-05-24 22:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
程序代码:
CLEAR
DIMENSION aArray[1]
Split(@aArray, "Hello,chen,ling,xiao", ",")
FOR nIndex = 1 TO ALEN(aArray, 1)
    ? aArray[nIndex]
NEXT
RETURN 

*----------------------
* 功能:把一个字符串按指定的分隔符分割成数组
* 参数:    taArray -- 返回的数组(在调用处用地址传递方式传入,用于返回)
*          tcString -- 被分割的源字符串
*       tcDelimiter -- 分隔字符串
* 返回:分割出的数组的元素数目
*----------------------
FUNCTION Split(taArray, tcString, tcDelimiter)
    LOCAL lnCount, lnIndex
   
    lnCount = GETWORDCOUNT(tcString, tcDelimiter)
    DIMENSION taArray[lnCount]      && 不管传入的数组原来是怎样的,都重新分配
    FOR lnIndex = 1 TO lnCount
        taArray[lnIndex] = GETWORDNUM(tcString, lnIndex, tcDelimiter)
    NEXT
   
    RETURN lnCount
   
ENDFUNC 

注意GETWORDCOUNT()和GETWORDNUM()函数的bug:假如字符串tcString中不存在tcDelimiter指定的字符串,那么都将获得一个元素的数组,这个元素是源字符串tcString。如果你的应用真需要避免这种误判,请自己增加判断代码——只要在函数的一开始,就用ATC()函数查找分割字符串是否存在,如果没有,直接返回0,在调用处检查函数的返回值是否为零,不要贸贸然使用那个数组。

这个Split()函数是仿C#中字符串中同名方法做的,功能一样,不单可以指定用逗号分割,也可以用别的任意字符(串),甚至用回车换行符。

这个函数写好了,就可以作为现成的库函数使用,作用跟VFP提供的函数一样。

[ 本帖最后由 TonyDeng 于 2012-5-24 23:07 编辑 ]

授人以渔,不授人以鱼。
2012-05-24 22:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 3楼 sdta
他分割的每个单元,不一定都是单个字符的,呵呵。

授人以渔,不授人以鱼。
2012-05-24 22:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 6楼 TonyDeng
两个示例,及你举的示例,均是以","为分隔符的。


兵来将挡。

坚守VFP最后的阵地
2012-05-24 22:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你再看清楚。你3楼第一个程序,是把源字符串中的逗号删掉数剩下字符的数目作数组元素数,这就是认定分割出来的数组每个元素都是单字符。

我分出来的是任意不等长的各个字符串,而且那个分割符也可以是任意的字符串(不仅仅是字符)。

[ 本帖最后由 TonyDeng 于 2012-5-24 23:00 编辑 ]

授人以渔,不授人以鱼。
2012-05-24 22:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
如果我的第一个示例中如果真有双字节字符,那就用第二个示例,同样能解决问题。方法是多种多样的,具体问题处理方法是不一样的。
第一个示例可以变化一下,就能处理双字节字符问题或类似于“12,123”问题。


[ 本帖最后由 sdta 于 2012-5-24 23:08 编辑 ]

坚守VFP最后的阵地
2012-05-24 23:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
改过当然可以了,哈哈。

授人以渔,不授人以鱼。
2012-05-24 23:04
快速回复:VF里有没有可以把有分隔符的字符串放入数组的函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055476 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved