2013-07-18 97 views
1

我有一個字符串,它看起來像這樣:AutoHotkey的腳本 - 字符串分割

17/07/2013 TEXTT TEXR   1 Text         1234567   456.78  987654 

我需要分開處理,所以我只用2倍的值(在這個例子是1234567和456.78)結束。剩下的就不需要了。

我嘗試使用字符串拆分與%A_Space%,但作爲值之間的整個中間區域填充空格,它並沒有真正的工作。

有人有想法嗎?

+0

您的列表是否以此方式保持一致?也就是說,你會有任何與空間有關的詞嗎? TEXTT TEXR會不會改變? – bgmCoder

+0

第二個值(即TEXTT TEXR)可以是從1到4個字的任何值。下一個值始終爲1,下面的值始終爲「文本」。之後的值總是不同的,但總是相似的。 – user2593572

回答

0

你應該看看RegExMatch()RegexReplace()

所以,你需要建立一個正則表達式針(我不是專家regexer,但是這將工作)

首先,刪除所有的字符串高達「1個文本」,因爲「結束1文本「就像你說的那樣,是不變的。這會讓你看到三個數字值。

像這樣的東西應該找到剛纔的數字你想要的:

needle:= "iO)1\s+Text" 
partialstring := RegexMatch(completestring, needle, results) 

lenOfFrontToRemove := results.pos() + results.len() 
lastthreenumbers := substr(completestring, lenOfFrontToRemove, strlen(completestring)) 
lastthreenumbers := trim(lastthreenumbers) 
msgbox % lastthreenumbers 

要解釋的正則表達式針: - 在i指不區分大小寫 - 在O代表的選擇 - 它可以讓我們用results.pos和results.len - \s表示查找空白; +意味着如果存在多於一個的話。

現在你只有最後三個數字。

1234567   456.78  987654 

但你明白了吧?你應該能夠從這裏解析它。

一些提示:在正則表達式中,使用\d查找任意數字,並使用+使其連續查找多個數字。如果您想查找期間,請使用\.

1
src:="17/07/2013 TEXTT TEXR   1 Text        " 
. " 1234567   456.78  987654", pattern:="([\d\.]+)\s+([\d\.]+)" 
RegexMatch(src, pattern, match) 
MsgBox, 262144, % "result", % match1 "`n"match2 
+0

啊,你得到的正則表達式 - 我試過,但無法弄清楚。 – bgmCoder