“384kfjkd打开假”
请把上面的字符串输出成TXT文件,一共占30位,不够输出空格,设计思想:数字占一位,英文占一位,文字占两位。最好把这个字符串赋于一个变量,然后用循环按位检查.
谢谢!!!

解决方案 »

  1.   

    可以逐个检查asc()的值,负值表示中文,即两位,然后加总。
      

  2.   

    用VB吗?
    好像不行,VB里面都是用UNIcode的,Windows也是,不管英文数字还是中文都占两位,如果你把输出的字符串转换为ANSI,TXT文件写入的时候会报错如果不牵扯内码转换的问题你可以这样做:objStr=""
    YourStr="384kfjkd打开假"
    i=len(YourStr)
    for j=1 to i
    Strtmp=Mid(yourstr,j,1)
    Strtmp=Strconv(Strtmp,vbfromunicode)
    if Lenb(Strtmp)=2 then
    '汉字
    objstr=objstr & space(1) & strconv(strtmp,vbUnicode)
    else
    '英文
    objstr=objstr & strconv(strtmp,vbUnicode)
    end if
    nextdim Outstr as string * 30
    outstr=objstr
      

  3.   

    dim s as String * 30
    s = space$(30)
    s="384kfjkd打开假"直接把S输出就行了,绝对是占30位的,你不信用Len试试
      

  4.   

    我采用了‘中海’的方法,问题解决了。
    For i = 1 To Len(rs!name)
    If Asc(Mid(rs!name, i, 1)) > 0 Then
    name = name & Mid(rs!name, i, 1)
    namewei = namewei + 1
    Else
    name = name & Mid(rs!name, i, 1)
    namewei = namewei + 2
    End If
    Next
    For i = 1 To (30 - namewei)
    name = name & " "
    Next
      

  5.   

    最简单的方法:
    dim byteArr(1 to 30) as byte
    '......
    byteArr=space$(30)
    s="384kfjkd打开假"
    for i=1 to lenB(s)
      byteArr(i)=MidB(s,i,1)
    next
    '...
    '然后输出到一个二进制文件,扩展名为".txt"