回 帖 发 新 帖 刷新版面

主题:请教字符串问题

如何为一组字符串(如下:任意阿拉伯数字组成,长度不限)每四位之间插入横杠“-”后组成新的字符串?
494176198349916

反之,又如何为有横杠“-”的字符串去掉横杠“-”,如下:
4941-7619-8349-916

回复列表 (共5个回复)

沙发

1.每四位加"-",默认源数据无误.
a$="494176198349916"  '分明是身份证号码嘛,还那么年轻呢
do until i>=len(a$)
   i=i+1
   c=asc(mid$(a$,i,1))
   if c>47 and c<58 then k=k+1
   if k>4 then
      k=k-4
      mid$(a$,i)="-"+mid$(a$,i)
      i=i+1
   endif
loop

2.如果没有其它意外的东西,单纯是去掉"-"的话:
a$="4941-7619-8349-916"
do while instr(a$,"-")
   i=instr(a$,"-")
   a$=left$(a$,i-1)+mid$(a$,i+1)
loop

3.关于字符串的问题,呵呵......尽管冲我来.

板凳

谢谢!但第一部分每四位加"-"源码编译后运行计算有误,把数码的后面三位数字去掉了,变成“4941-7619-8349-”,剩余的三位数同样要的,即是4941-7619-8349-916”形式,麻烦您再看看。还有呀,这组数是任意阿拉伯数字组成的,不是固定的,长度也不固定。

3 楼

呵呵,有道理,要修改.

a$="494176198349916"  '分明是身份证号码嘛,还那么年轻呢
do until i>=len(a$)
   i=i+1
   c=asc(mid$(a$,i,1))
   if c>47 and c<58 then k=k+1
   if k>4 then
      k=k-4
      [color=FF00FF]a$=left$(a$,i-1)"-"+mid$(a$,i)[/color]
      i=i+1
   endif
loop

4 楼

不太习惯上述方法,习惯使用FOR TO NEXT方法,拿出请各位高手多多指教
CLS
INPUT A$
FOR I=1 TO LEN(A$) STEP 4
    IF LEN(A$)-I>4 THEN B$=B$+MID$(A$,I,4)+"-" ELSE B$=B$+RIGHT$(A$,LEN(A$)-I)
NEXT I
PRINT B$
END

5 楼

呵呵,抱歉,是我把问题复杂化了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册