| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1467 人关注过本帖
标题:★ 如何写代码将名单转换成每行排列16个学生名字?
只看楼主 加入收藏
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
以下是引用hu9jj在2015-8-15 08:28:53的发言:

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



这可不是钻牛角尖,这是很现实的问题,中文名字最多可以有七个字(甚至更多)
2015-08-15 16:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用eepcvfp在2015-8-15 16:44:58的发言:



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

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

王五五
  

写个自定义函数

坚守VFP最后的阵地
2015-08-15 17:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
姓名中插入空格有什么作用?
2015-08-15 19:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
怎麼插空格都不好看,對字符串來說,要麼全左對齊,要麼中間對齊。

授人以渔,不授人以鱼。
2015-08-15 21:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
SELECT * FROM Xsxx INTO CURSOR Temp
LOCAL cStr,nCnt,cXm
cStr=""
nCnt=0
SCAN
    * 去除 Name 前面的CHR(9)字符
    cXm=STRTRAN(ALLTRIM(Name),CHR(9),"")
    * 判断姓名是否是两个汉字
    cXm=IIF(LEN(cXm)=4,STUFF(cXm,3,0,SPACE(2)),cXm)
    DO CASE
        CASE INLIST(LEFT(cXm,6),"高81级","班主任")
             cStr=cStr+IIF(nCnt>0,0H0D0A,"")+cXm+0H0D0A
             nCnt=0
        OTHERWISE
            nCnt=nCnt+1
            cStr=cStr+cXm+IIF(MOD(nCnt,16)=0,0H0D0A,SPACE(1))
    ENDCASE
ENDSCAN
* 保存在文本文件中
=STRTOFILE(cStr,"学生名单.Txt")
MODIFY FILE 学生名单.Txt
* 保存在临时表中
CREATE CURSOR Md (XM C(120))
APPEND FROM 学生名单.Txt SDF 
BROWSE 
CLOSE DATABASES 

坚守VFP最后的阵地
2015-08-15 21:17
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
程序代码:
SET TALK OFF
SET SAFETY Off
CLOSE ALL
CLEAR ALL
CLEAR
WAIT "请打开存放数据的文件。。。。。"
USE ?
Word=CREATEOBJECT('word.application')  &&创建WORD文档
Word.Visible=.t. &&显示WORD文档
Word.Documents.add()  &&建立新文档
Word.ActiveDocument.PageSetup.TopMargin=2/0.035  &&设置上页边距
Word.ActiveDocument.PageSetup.BottomMargin=2/0.035  &&设置下页边距
Word.ActiveDocument.PageSetup.LeftMargin=2/0.035  &&设置左页边距
Word.ActiveDocument.PageSetup.RightMargin=2/0.035  &&设置右页边距
GO top
Word.Selection.Font.Size = 15  &&指定字号,9为小五号,10.5为五号,12为小四号
Word.Selection.Font.Name = "黑体"  &&设置字体
word.Selection.ParagraphFormat.Alignment=1
word.Selection.TypeParagraph
word.selection.typetext('学 生 名 单')
word.Selection.TypeParagraph
i=1
Word.Selection.Font.Size = 12.5  &&指定字号,9为小五号,10.5为五号,12为小四号
Word.Selection.Font.Name = "宋体"  &&设置字体
word.Selection.ParagraphFormat.Alignment=0
DO WHILE !eof() 
   IF LEN(ALLTRIM(name))>6
      word.Selection.TypeParagraph
     
      word.selection.typetext(ALLTRIM(name))
      word.Selection.TypeParagraph
      SKIP   
      i=1
   ELSE
      IF MOD(i,8)=0
        i=1
        word.Selection.TypeParagraph
      ELSE
         IF LEN(allt(name))=6
            word.selection.typetext( SUBSTR(name,1,8))
         ELSE
            word.selection.typetext( SUBSTR(name,1,2)+'  '+SUBSTR(name,3,4))
         ENDIF
         
         i=i+1
      ENDIF
      skip
   ENDIF

 ENDDO
  word.Selection.WholeStory

 word.Selection.ParagraphFormat.LineSpacingRule = 4   

 Word.Selection.ParagraphFormat.LineSpacing = 17

 USE

 SET TALK ON

 return  
也许能给你些帮助。我的程序是每行8人。直接输出到WORD文档。
2015-08-16 01:35
IHORSE
Rank: 1
等 级:新手上路
帖 子:41
专家分:5
注 册:2007-2-11
收藏
得分:0 
回复 15楼 sdta
非常感谢,问题得以解决。
现在需要咨询另一个问题:我有很多名单,其中的年级不一定都是“高81级”,还有可能是“高2012级”等等,不想在程序里面来修改年级标识,希望程序自动读取。
  比如说这样:  LIKEC("*班主任*", NAME) OR LIKEC("*高*级*", NAME),,如何将其写入程序中?
2015-08-16 08:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
上传完整文件,判断Name字段的长度,说明是否是学生姓名。

[ 本帖最后由 sdta 于 2015-8-16 09:10 编辑 ]

坚守VFP最后的阵地
2015-08-16 09:07
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 16楼 wangzhiyi
数据表看了吗

坚守VFP最后的阵地
2015-08-16 09:12
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
回复 19楼 sdta
看了,不知道楼主的数据是从什么地方拷贝过来的,前面有三个ASC码为9的字符,后面还有,我提前做了处理。还有,现实中应该没有这样管理数据的。
2015-08-16 10:01
快速回复:★ 如何写代码将名单转换成每行排列16个学生名字?
数据加载中...
 
   



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

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