找回密码
 加入
搜索
查看: 2107|回复: 3

[效率算法] 正则提取内容并计算【已解决】

[复制链接]
发表于 2017-4-29 01:28:48 | 显示全部楼层 |阅读模式
本帖最后由 3131210 于 2017-4-30 00:37 编辑

比如说    以下内容在剪贴板或者在一个文本里面,我想正则提取数据【存款】一共有多少    【提款】一共有多少   负盈利(存款-提款)有多少      怎么写代码呢?
存款        test        TB        20
提款        test        TB        200
存款        test        TB        50
存款        test        TB        30
存款        test        TB        50
存款        test        TB        50
存款        test        TB        20
存款        test        TB        20
存款        test        TB        50
提款        test        TB        100
存款        test        TB        30
发表于 2017-4-29 19:59:29 | 显示全部楼层
#include <ARRAY.AU3>
$string = _
                '存款        test        TB        20' & @CRLF & _
                '提款        test        TB        200' & @CRLF & _
                '存款        test        TB        50' & @CRLF & _
                '存款        test        TB        30' & @CRLF & _
                '存款        test        TB        50' & @CRLF & _
                '存款        test        TB        50' & @CRLF & _
                '存款        test        TB        20' & @CRLF & _
                '存款        test        TB        20' & @CRLF & _
                '存款        test        TB        50' & @CRLF & _
                '提款        test        TB        100' & @CRLF & _
                '存款        test        TB        30'
Local $ARRAY = StringRegExp($string, '\S+', 3)
Local $ret = 0
For $I = 0 To UBound($ARRAY) - 1 Step 4
        If StringInStr($ARRAY[$I], '提') Then $ARRAY[$I + 3] = -1 * $ARRAY[$I + 3]
        $ret += $ARRAY[$I + 3]
Next
MsgBox(0, '合计', $ret)
发表于 2017-4-29 21:08:55 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $jishu[4],$chun,$qukuan
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Label1 = GUICtrlCreateLabel("存款:", 128, 104, 136, 17)
$Label2 = GUICtrlCreateLabel("提款:", 128, 152, 136, 17)
$Label3 = GUICtrlCreateLabel("负盈利:", 128, 208, 156, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$str="存款        test        TB        20"&@CRLF & _
"提款        test        TB        200"&@CRLF & _
"存款        test        TB        50"&@CRLF & _
"存款        test        TB        30"&@CRLF & _
"存款        test        TB        50"&@CRLF & _
"存款        test        TB        50"&@CRLF & _
"存款        test        TB        20"&@CRLF & _
"存款        test        TB        20"&@CRLF & _
"存款        test        TB        50"&@CRLF & _
"提款        test        TB        100"&@CRLF & _
"存款        test        TB        30"

$str1 = StringRegExp($str, '[a-zA-Z\d\x{4e00}-\x{9fa5}]+',3)
If Not @error Then

        ReDim $jishu[UBound($str1) / 4][4]
                For $i = 0 To UBound($jishu) - 1
                        
                        $jishu[$i][0] = $str1[$i * 4] ;存取款
                        $jishu[$i][1] = $str1[$i * 4+3] ;发生的金额
                        If StringInStr($jishu[$i][0], "存") Then
                                
                                $chun += $jishu[$i][1]
                        Else
                                $qukuan += $jishu[$i][1]

                                
                        EndIf
                Next
GUICtrlSetData($Label1, "存款:" & $chun)
GUICtrlSetData($Label2, "提款:" & $qukuan)
GUICtrlSetData($Label3, "负盈利:" & $chun - $qukuan)

EndIf
        
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
感谢群友fuldho与ACN~seniors数组相加的帮助!
 楼主| 发表于 2017-4-30 00:36:59 | 显示全部楼层
非常感谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 00:08 , Processed in 0.073712 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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