在我正在進行的一個項目中,我需要在所有QRegExp
捕獲中製作一個QStringList
,除了其中兩個:第一個和其他參數之一,取決於其他一些參數。什麼是QRegExp :: pos()沒有相應的QRegExp :: len()的排序?
直接的方法是使用QRegExp::capturedTexts()
,然後從返回的列表中刪除兩個不需要的項目。然而這意味着兩個QStrings
和相關的QList
的節點需要被分配,而沒有任何實際使用,這看起來很浪費。
我之後認爲我自己會在QRegExp::cap()
的時候自己創建一個QStringList
。但是QRegExp::cap()
是itself implemented in terms ofQRegExp::capturedTexts()
,這會使我的代碼看起來很有趣,至少。
所以我看着API,發現相當方便QRegExp::pos()
方法,其中,文檔指出,«返回搜索字符串中的第n個捕獲文本的位置。»
整齊漂亮,我想,那麼我可以使用QString::mid()
並自己構建QStringList
。畢竟,這是what the actual implementation的QRegExp::capturedTexts()
does。
除了我不知道如何檢索第n個捕獲的文本長度,我需要通過QString::mid()
提取捕獲的文本。事實上,任何捕獲的文本的位置和長度都被一個存儲在另一個旁邊,如can be seen在QRegExp::pos()
implementation中,但沒有長度信息的訪問者,除非我非常錯誤,我在其中道歉提前。 :)
所以,這裏是我的問題:如果我是正確的,並且沒有辦法檢索任何給定的捕獲文本的長度,QRegExp::pos()
有哪些用例?我無法想象任何我想知道被捕獲文本的開始位置的情況,而無法檢索它。
__
PS。 Qt5 QRegularExpressionMatch
類提供了填充這個空白的方法capturedStart()
和capturedEnd()
,但我堅持使用Qt4.8.6。
這就是我要做的,當然,但我很好奇QRergExp :: pos()有哪些用途,我無法想象。 –