jchang 发表于 2008-9-30 20:15:54

关于字符串问题请教

字符串以“\”分开,例如:344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV
如何只读出最后三个字符 :64RR\4RR\ZXGV。请各位指教

[ 本帖最后由 jchang 于 2008-10-1 22:51 编辑 ]

netegg 发表于 2008-9-30 21:10:50

没看明白
是不是这样的stringleft("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", 3)
还是$a=stringsplit("344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV", "\")
$a[$a-1], $a[$a-2],$a[$a-3],这个应该是最右边的
$a,$a,$a这是最左边的

[ 本帖最后由 netegg 于 2008-9-30 21:12 编辑 ]

liongodmien 发表于 2008-9-30 22:45:42

我也来学习学习

$string= '344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$M = ''
$t = StringSplit($string, "\", 0)
For $i = $t - 2 To $t
        $M &=$t[$i] & @CRLF
Next
MsgBox(64, "", $M)

pcbar 发表于 2008-9-30 23:09:09

$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b)

liongodmien 发表于 2008-10-1 10:32:39

原帖由 pcbar 于 2008-9-30 23:09 发表 http://www.autoitx.com/images/common/back.gif
$a='344\AB\CD\44554\AGDFDF\64RR\4RR\ZXGV'
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)
MsgBox(0,0,$b)

超版真是强,昨晚第一时间想到用StringRegExp,可惜帮助看来看去也想不出一个合适的表达式...

这下学习了!

不过,再看了多次帮助也还没明白,请注释一下,好吗?

[ 本帖最后由 liongodmien 于 2008-10-1 11:21 编辑 ]

liongodmien 发表于 2008-10-1 15:09:25

终于弄明白了!

([^\\]+\\){2}[^\\]+$
[^\\]匹配非“\”字符
+一个或多个
\\匹配一个“\”字符
{2}按前面的子式匹配2次
[^\\]再次匹配非“\”字符
+   一个或多个
$从字符串尾开始匹配
()里面的表达式为此正则表达式的子式
把意思连接起来就是:
(匹配非“\”字符一个或多个再匹配一个“\”字符)‘按这种情况’重复2次,再匹配非“\”字符一个或多个,此种匹配方式从字串尾开始
今天下午看了一下午的正则表达式,那篇文章说30分钟认识,我反复用了4小时前前后后的看!累死了!

[ 本帖最后由 liongodmien 于 2008-10-1 21:07 编辑 ]

jchang 发表于 2008-10-1 22:50:49

非常感谢各位的指点,问题解决啦,以上的三种方法都是可以的,看来以后还得好好学啊!

liongodmien 发表于 2008-10-2 13:14:52

补充记录!
$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+$',2)

$b=StringRegExp($a,'([^\\]+\\){2}[^\\]+\z',2)
效果一致,$是正则表达式一个有明确说明的定义符,在AUTOIT有帮助没有说明,\z就是在AUTOIT的帮助里有明确说明的了!
页: [1]
查看完整版本: 关于字符串问题请教