haodd 发表于 2010-8-28 15:05:21

字符串处理 【已解决】

本帖最后由 haodd 于 2010-8-29 12:00 编辑

类似字符串

FAJ8593

JONasd132

JAm4632

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

上一问已经 由2 3楼解决

下一问

FAJ8593

JONasd132

JAm4632

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

afan 发表于 2010-8-28 15:10:01

本帖最后由 afan 于 2010-8-28 15:11 编辑

$str = 'FAJ8593'
ConsoleWrite(StringRegExpReplace($str, '\d+.*', '')& @LF)

水木子 发表于 2010-8-28 15:10:18

本帖最后由 水木子 于 2010-8-28 15:11 编辑

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

pusofalse 发表于 2010-8-28 15:14:40

两种方法都学习了~
猜想\d+.*比\d快~

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

haodd 发表于 2010-8-28 15:16:16

StringRegExp前面只想到这个 呵呵都是正解谢谢!

C.L 发表于 2010-8-28 15:17:58

都是正则强人,反应太快了

水木子 发表于 2010-8-28 15:21:56

回复 4# pusofalse

是啊!从效率方面来看,\d+ 应该是比\d效率更高。
大师看问题永远都是那么尖锐啊!    {:face (300):}

xsjtxy 发表于 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)

xsjtxy 发表于 2010-8-28 15:34:35

回复 1# haodd


    LZ第二个问题另外开贴吧。

afan 发表于 2010-8-28 15:38:16

(.+?)(\d+)

xsjtxy 发表于 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
$f = $a
$f = $b
_ArrayDisplay($f)

C.L 发表于 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,"数字")

3mile 发表于 2010-8-28 17:00:42

#include <array.au3>
$a = "FAJ8593"& @CRLF & _
"JONasd132"& @CRLF & _
"JAm4632"
$array = StringRegExp($a, '(.+?)(\d+)', 3)
_ArrayDisplay ($array)

haodd 发表于 2010-8-29 12:00:39

嗯嗯谢谢大家了
页: [1]
查看完整版本: 字符串处理 【已解决】