sex123 发表于 2015-2-24 00:21:41

如何将一组字符串裁成相同的长度?

比如以下人名
Annabe
Angeline
Angelina Christina
Christine Isabella
Elizabeth Rebecca
Juliana Jocelyn
Rose linda
这些人名有长有短,怎么把他们都裁成相同的长度,比如10个字符,如果长了,则把人名尾端去掉,如果不够长,则在人名后面加上特别的字符占位,比如------点位
形成以下这样
Annabe----
Angeline--
Angelina C
Christine I
Elizabeth R
Juliana Joc
Rose linda

veket_linux 发表于 2015-2-24 09:56:17

$s1 = "Angelina Christina"
$s2 = ""
$slen = StringLen($s1)
$s2 = StringLeft($s1, 10)
If $slen<10 Then
        $i = $slen
        While $i<=10
                $s2 &= "-"
                $i += 1
        WEnd
EndIf
MsgBox(0, "", $s2)

netegg 发表于 2015-2-24 12:38:29

本帖最后由 netegg 于 2015-2-24 18:43 编辑

Local $aA=['Annabe','Angeline','Angelina C','Christine I','Elizabeth R','Juliana Joc','Rose linda']
For $i In $aA
   ConsoleWrite(stringleft($i&'------------', 10)& @cr)
Next

netegg 发表于 2015-2-24 18:46:03

本帖最后由 netegg 于 2015-2-24 19:16 编辑

Christine I
Elizabeth R
这两个是11个字符吧
楼主说明白点,空格在什么情况下算字符,什么情况下算

Angelina C
Christine I
Elizabeth R
Juliana Joc
Rose linda
这几行看,第1行算,第2,3,4行不算,第5行算

多说一句,要是想要固定宽度,只能用gdi,api的操作没戏,那个和字体本身的宽度有关

sex123 发表于 2015-2-24 20:02:30

$s1 = "Angelina Christina"
$s2 = ""
$slen = StringLen($s1)
$s2 = StringLeft($s1, 10)
If $slen
veket_linux 发表于 2015-2-24 09:56 http://www.autoitx.com/images/common/back.gif
要的是这种,但是while部分我把=去掉了,大体上通过了。谢谢,netegg写的我不太懂。选2楼的答案吧。

netegg 发表于 2015-2-24 20:03:23

本帖最后由 netegg 于 2015-3-1 16:29 编辑

Local $aA=['Annabe','Angeline','Angelina C','Christine I','Elizabeth R','Juliana Joc','Rose linda']
For $i In $aA
ConsoleWrite(StringRegExpReplace(stringleft($i&'          ', 10), '\s(?=\s*$)','-')& @cr)
Next

netegg 发表于 2015-3-1 16:35:17

回复 5# sex123
2楼那个不是一样吗Christine Isabella也出不来Christine I呀

lxwlxwayy 发表于 2015-3-6 12:41:15

帮顶{:face (427):}
页: [1]
查看完整版本: 如何将一组字符串裁成相同的长度?