| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1467 人关注过本帖
标题:★ 如何写代码将名单转换成每行排列16个学生名字?
只看楼主 加入收藏
IHORSE
Rank: 1
等 级:新手上路
帖 子:41
专家分:5
注 册:2007-2-11
结帖率:100%
收藏
 问题点数:0 回复次数:20 
★ 如何写代码将名单转换成每行排列16个学生名字?
请教如何写代码将以下名单转换成每行16个名字?
高81级(1978—1981) (1—3班)   计175人            
班主任    张朝明        
高81级    高81级(1)58人        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
    ……   
            
班主任    黄万勋        
高81级    高81级(2)61人        
    胡天德        
    陈德贵        
    何志银        
    何笃安        
    杜进        
    周艳霞        
    杜启文        
    甘功文        
    ……        
   
    (……处有若干名字)
要解决的问题:
1.“班主任    XXX ”“高81级    高81级(2)61人”等字符不能跟姓名一行;
2.学生名单按照每行16人显示,每两人之间用空格隔开;
3.因为有些学生姓名中只有两个汉字,要想跟三个字的名单对齐,得处理成跟三字名字一样,如“杜金”要处理为“杜  金”(中间有空格)。

xsxx.rar (1.57 KB)

请各位大神相助,谢谢!

数据已经上传,其中的DBF文件中只有一列数据,希最终显示的txt文件中格式如下:

高81级(1978—1981) (1—3班)   计175人            
班主任    张朝明        高81级    高81级(1)58人     
 张小川    刘筱芳    黄乾坤     肖青贵     xxxx     xxxx     xxxx  ……    (一共16个姓名,每个姓名间相同个数的空格分隔)
 xxxx    xxxx     xxxx    xxxx    xxxx    ……      ……     ……    (一共16个姓名,每个姓名间相同个数的空格分隔)


班主任    黄万勋        
高81级    高81级(2)61人        
 胡天德        陈德贵        何志银         何笃安         杜进         周艳霞    ……    (一共16个姓名,每个姓名间相同个数的空格分隔)

…………

另外说一点,如果遇到姓名为两个字的,就在两个字的中间增加空格,以便显示为三个汉字,这样可与上面一行对齐。

还望大神相助。[b][b]

[ 本帖最后由 IHORSE 于 2015-8-15 11:13 编辑 ]
搜索更多相关主题的帖子: 班主任 张朝明 如何 
2015-08-14 10:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
说的太模糊了

这神马名单 是从何处而来   转化后 又要去向何方

DO IT YOURSELF !
2015-08-14 10:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
上传文件看看,最后显示格式。

坚守VFP最后的阵地
2015-08-14 10:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
回复 楼主 IHORSE
具体不明,既然用空格分隔姓名,又要在姓名中插入空格,只好用汉字库全角空格试试。
测试代码,看看是不是这意思?
程序代码:
** 测试数据
TEXT TO cText NOSHOW
班主任    张朝明        
高81级    高81级(1)58人        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
    张小川        
    刘筱芳        
    黄乾坤        
    肖青贵        
            
班主任    黄万勋        
高81级    高81级(2)61人        
    胡天德        
    陈德贵        
    何志银        
    何笃安        
    杜进        
    周艳霞        
    杜启文        
    甘功文      
    胡天德        
    陈德贵        
    何志银        
    何笃安        
    杜进        
    周艳霞        
    杜启文        
    甘功文      
    胡天德        
    陈德贵        
    何志银        
    何笃安        
    杜进        
    周艳霞        
    杜启文        
    甘功文      
ENDTEXT
j = 1
xm = ""
FOR i = 1 TO ALINES(aText, cText)
    IF !EMPTY(aText(i))
        IF LIKEC("*班主任*", aText(i)) OR LIKEC("***", aText(i))
            IF !EMPTY(xm)
                ? SUBSTR(xm, 2)
                j = 1
                xm = ""
            ENDIF
            ? aText(i)
        ELSE
            aText(i) = ALLTRIM(aText(i))
            IF LENC(aText(i)) == 2
                aText(i) = LEFT(aText(i),2) + 0hA1A1 + RIGHT(aText(i),2) 
            ENDIF
            xm = xm + " " + aText(i)
            j = j + 1
            IF j > 16
                ? SUBSTR(xm, 2)
                j = 1
                xm = ""
            ENDIF
        ENDIF
    ENDIF
ENDFOR
IF !EMPTY(xm)
    ? SUBSTR(xm, 2)
ENDIF
2015-08-14 11:43
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
上传数据吧,也许我可以帮你解决。
2015-08-15 02:20
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
上传数据看看
2015-08-15 07:42
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
这是输出的排列问题,应该不复杂。
钻点牛角尖:两个汉字的名字统一转换成三个汉字(中间加空格),那么四个及四个以上汉字的名字如何处理呢?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-08-15 08:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
以下是引用hu9jj在2015-8-15 08:28:53的发言:

这是输出的排列问题,应该不复杂。
钻点牛角尖:两个汉字的名字统一转换成三个汉字(中间加空格),那么四个及四个以上汉字的名字如何处理呢?

输出时用PADR()转换显示格式

坚守VFP最后的阵地
2015-08-15 12:09
沙枣
Rank: 4
来 自:宁夏银川
等 级:业余侠客
威 望:5
帖 子:103
专家分:221
注 册:2015-5-31
收藏
得分:0 
回复 楼主 IHORSE
我研究了你的问题,写了一个简单的程序,可以满足你的要求。
使用方法:在VFP中打开数据表后,运行“程序1”即可看到结果,所生成的文本文件可以全选复制到word中进行编辑,如果需要输出表格,不能用这个程序,得用另外一种处理方法。
private aLL
set talk off
set safety off
set color to +7/1
clear
copy to lszjk
use lszjk
replace all name with chrtranc(name,"  ","")
alter table lszjk alter column name C(130)
cxhh=1
dhzd=""
do while .not.eof()
if len(trim(name))<8
if cxhh<=16
if .not.eof()
if len(trim(name))=4
dhzd=dhzd+left(trim(name),2)+space(2)+right(trim(name),2)+space(2)
else
dhzd=dhzd+trim(name)+space(2)
endif
cxhh=cxhh+1
delete
skip
endif
else
replace name with dhzd
cxhh=1
dhzd=""
endif
else
if trim(dhzd)<>""
skip-1
recall
replace name with dhzd
skip
cxhh=1
dhzd=""
endif
skip
endif
enddo
skip-1
recall
replace name with dhzd
pack
list to ls.txt off
modi file ls.txt
return

xsxx.rar (6.41 KB)


[ 本帖最后由 沙枣 于 2015-8-17 16:03 编辑 ]
2015-08-15 16:11
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
以下是引用sdta在2015-8-15 12:09:27的发言:

 
输出时用PADR()转换显示格式


PADL( ) 函数从左边插入填充值,PADR( ) 函数从右边插入填充值,PADC( ) 函数从两边插入填充值。

在左边、右边或两边同时填充空格好像都不符合中文习惯啊,怎么实现在中间填充空格,实现如下效果:

王五五
  
2015-08-15 16:44
快速回复:★ 如何写代码将名单转换成每行排列16个学生名字?
数据加载中...
 
   



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

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