找回密码
 加入
搜索
查看: 4355|回复: 13

[AU3基础] 字符串处理 【已解决】

 火.. [复制链接]
发表于 2010-8-28 15:05:21 | 显示全部楼层 |阅读模式
本帖最后由 haodd 于 2010-8-29 12:00 编辑

类似字符串

FAJ8593

JONasd132

JAm4632

求数字出现的位置 或者 只打印出字母

上一问已经 由2 3楼解决

下一问

FAJ8593

JONasd132

JAm4632

把字母 和 数字 分别放到数组
dim $array[]  
使得 $array[1] = 字母
$array[2] = 数字

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-8-28 15:10:01 | 显示全部楼层
本帖最后由 afan 于 2010-8-28 15:11 编辑
$str = 'FAJ8593'
ConsoleWrite(StringRegExpReplace($str, '\d+.*', '')  & @LF)

评分

参与人数 2金钱 +50 收起 理由
pusofalse + 20 学习了~
水木子 + 30 太快啦!

查看全部评分

发表于 2010-8-28 15:10:18 | 显示全部楼层
本帖最后由 水木子 于 2010-8-28 15:11 编辑

去掉所有数字!
$sText = 'FAJ8593' & @CRLF & _
                'JONasd132' & @CRLF & _
                'JAm4632'
$sReg = StringRegExpReplace($sText, '\d', '')
MsgBox(0, '', $sReg)

评分

参与人数 2金钱 +50 收起 理由
pusofalse + 20 学习了~
afan + 30 也不慢啊

查看全部评分

发表于 2010-8-28 15:14:40 | 显示全部楼层
两种方法都学习了~
猜想\d+.*比\d快~

\d+.*匹配的是连续的数字字符。\d只匹配单个数字字符,相应的替换次数也就多了。
猜的。

评分

参与人数 1金钱 +20 收起 理由
afan + 20 感谢帮忙分析

查看全部评分

 楼主| 发表于 2010-8-28 15:16:16 | 显示全部楼层
StringRegExp  前面只想到这个 呵呵  都是正解  谢谢!
发表于 2010-8-28 15:17:58 | 显示全部楼层
都是正则强人,反应太快了
发表于 2010-8-28 15:21:56 | 显示全部楼层
回复 4# pusofalse

是啊!从效率方面来看,\d+ 应该是比\d效率更高。
大师看问题永远都是那么尖锐啊!   
发表于 2010-8-28 15:22:55 | 显示全部楼层
奇怪。为什么用for要这样才成功
$a = "FAJ8593"& _
"JONasd132"& _
"JAm4632"
MsgBox(0,"", $a)
For $i = 0 to 9
$a = StringReplace($a,""&$i&"","")
Next
MsgBox(0,"", $a)
发表于 2010-8-28 15:34:35 | 显示全部楼层
回复 1# haodd


    LZ第二个问题另外开贴吧。
发表于 2010-8-28 15:38:16 | 显示全部楼层
(.+?)(\d+)
发表于 2010-8-28 15:51:01 | 显示全部楼层
我发誓今天开始学正则
$a = "FAJ8593"& @CRLF & _
"JONasd132"& @CRLF & _
"JAm4632"
dim $b=$a
For $i = 0 to 9
$a = StringReplace($a,""&$i&"","")
Next
MsgBox(0,"", $a)

$c = "abcdefghijklmnopqrstuvwxyz"
do
$d = StringLeft($c, 1)
$b = StringReplace($b,""&$d&"","")
$c = StringTrimLeft($c, 1)
Until StringLen($c) < 1
MsgBox(0,"", $b)



#include <Array.au3>
dim $f[2]
$f[0] = $a
$f[1] = $b
_ArrayDisplay($f)
发表于 2010-8-28 16:09:42 | 显示全部楼层
本帖最后由 C.L 于 2010-8-28 16:35 编辑

回复 11# xsjtxy

弄得太复杂了吧?
每二个问题,一个数组可以搞定
#include <array.au3>
$str = "FAJ8593"& "JONasd132"&"JAm4632"
$array = StringRegExp($str, '(.*?)(\d+)', 3)
_ArrayDisplay ($array)
或者分开数组:
#include <array.au3>
$str = "FAJ8593"& "JONasd132"&"JAm4632"
$array = StringRegExp($str, '([[:alpha:]]+)', 3)
$array1 = StringRegExp($str, '([[:digit:]]+)', 3)
_ArrayDisplay ($array,"字母")
_ArrayDisplay ($array1,"数字")
发表于 2010-8-28 17:00:42 | 显示全部楼层
#include <array.au3>
 $a = "FAJ8593"& @CRLF & _
 "JONasd132"& @CRLF & _
 "JAm4632"
$array = StringRegExp($a, '(.+?)(\d+)', 3)
_ArrayDisplay ($array)
 楼主| 发表于 2010-8-29 12:00:39 | 显示全部楼层
嗯嗯  谢谢大家了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 10:41 , Processed in 0.080317 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表