找回密码
 加入
搜索
查看: 3548|回复: 11

[AU3基础] 正则求助,把指定内容用正则替换成指定格式!

  [复制链接]
发表于 2013-5-12 16:04:49 | 显示全部楼层 |阅读模式
内容:
名称          单价  数量  总价
这个是商品    10.00  1      10.00
这个是  10.00  1   10.00

以下想达到的效果!
名称          单价  数量  总价
这个是商品    10.00  1      10.00
这个是          10.00  1      10.00

因为输入的信息名称长短都不一样所以想用正则实现!!
内容都是要写入到word文档的```
发表于 2013-5-12 16:44:52 | 显示全部楼层
我感觉~好像没什么变化~
 楼主| 发表于 2013-5-12 17:37:07 | 显示全部楼层
回复 2# haijie1223


    就是让数值 都对其
发表于 2013-5-12 18:47:09 | 显示全部楼层
Dim $str = "这个是商品    10.00  1                         10.00" & @CRLF & _
                "这个是  10.00                    1        10.00" & @CRLF & _
                "以下想达到的效果!" & @CRLF & _
                "名称          单价  数量  总价" & @CRLF & _
                "这个是商品    10.00     1             10.00" & @CRLF & _
                "这个是          10.00                     1                                             10.00"

Dim $sstr = StringRegExp($str, "(?m)\d\S*\s*\d*\s*\d\S*", 3)
If Not @error Then
        For $i = 0 To UBound($sstr) - 1
                $sstr[$i] = StringRegExpReplace($sstr[$i], "\s+", "  ")
                ConsoleWrite($sstr[$i] & @CRLF)
        Next
EndIf
发表于 2013-5-12 19:00:18 | 显示全部楼层
word里有一个selection.ConvertToTable,直接可以把文本转换成表格,就对齐了
发表于 2013-5-12 19:36:37 | 显示全部楼层
回复 5# kevinch


    老大,可喜可贺,终于把您那个亮得瞎眼的 Noki XXXX  签名换掉了~!

评分

参与人数 1金钱 +20 收起 理由
afan + 20 共识

查看全部评分

发表于 2013-5-12 20:03:55 | 显示全部楼层
本帖最后由 afan 于 2013-5-12 20:14 编辑

这个用正则意义不大~ 就算 StringRegExpReplace($s, '\h+', @TAB) 也难对齐,而且在不同的控件里显示对齐方式也有差别
发表于 2013-5-12 20:16:35 | 显示全部楼层
回复 6# user3000


时过境迁了
发表于 2013-5-12 20:22:54 | 显示全部楼层
#Include <Array.au3>

Dim $str =  "名称          单价  数量  总价" & @CRLF & _
                "这个是商品    10.00     1             10.00" & @CRLF & _
                "这个是sssss          10.00                     1                                             10.00"

        While Not (StringInStr($str, "  ") = 0)
                $str = StringReplace($str, "  ", " ")
        WEnd

Dim $sstr = StringSplit($str,@CRLF,3)
Local $temp2=""

For $li In $sstr
   $temp =StringSplit($li," ",2) 
   For $zz In  $temp 
  $temp2 =  $temp2 & StringFormat ("%-"&(20-get_cn_number($zz))&"s",$zz )
   next
   $temp2=$temp2& @CRLF
Next
 ConsoleWrite($temp2)
 MsgBox(0,"",$temp2)
 
Func get_cn_number($temp);获取字符串中中文字符的个数
Local $array = StringRegExp($temp, "[\x{4e00}-\x{9fa5}]", 3)
Return UBound($array)
EndFunc
发表于 2013-5-12 21:41:10 | 显示全部楼层
回复 8# kevinch
与时俱进了,哈哈!
发表于 2013-5-12 21:42:46 | 显示全部楼层
回复 8# kevinch
与时俱进了,哈哈!
咦,'淡泊以明志,宁静以致远'呢?
发表于 2013-5-12 21:43:47 | 显示全部楼层
原来回复帖子是不带签名的啊!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 07:32 , Processed in 0.138797 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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