病毒专收员 发表于 2013-5-12 16:04:49

正则求助,把指定内容用正则替换成指定格式!

内容:
名称          单价数量总价
这个是商品    10.001      10.00
这个是10.001   10.00

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

因为输入的信息名称长短都不一样所以想用正则实现!!
内容都是要写入到word文档的```

haijie1223 发表于 2013-5-12 16:44:52

我感觉~好像没什么变化~

病毒专收员 发表于 2013-5-12 17:37:07

回复 2# haijie1223


    就是让数值 都对其

haijie1223 发表于 2013-5-12 18:47:09

Dim $str = "这个是商品    10.001                         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

kevinch 发表于 2013-5-12 19:00:18

word里有一个selection.ConvertToTable,直接可以把文本转换成表格,就对齐了

user3000 发表于 2013-5-12 19:36:37

回复 5# kevinch


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

afan 发表于 2013-5-12 20:03:55

本帖最后由 afan 于 2013-5-12 20:14 编辑

这个用正则意义不大~ 就算 StringRegExpReplace($s, '\h+', @TAB) 也难对齐,而且在不同的控件里显示对齐方式也有差别

kevinch 发表于 2013-5-12 20:16:35

回复 6# user3000
{:face (197):}

时过境迁了

lainline 发表于 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

xms77 发表于 2013-5-12 21:41:10

回复 8# kevinch
与时俱进了,哈哈!

xms77 发表于 2013-5-12 21:42:46

回复 8# kevinch
与时俱进了,哈哈!
咦,'淡泊以明志,宁静以致远'呢?

xms77 发表于 2013-5-12 21:43:47

原来回复帖子是不带签名的啊!
页: [1]
查看完整版本: 正则求助,把指定内容用正则替换成指定格式!