QString如何替換字符串中小括號內的字符串?

目標:

有一個字符串如: QString str("test1(97) test2(88) test3(90)"); 希望將小括號內的數字全部替換成good。 替換後的字符串變成test(good) test2(good) test3(good)。


方法:

由於小括號裡的內容都不一樣,很顯然用正則表達式最合適。恰好QString的replace函數是支持正則表達式的。

replace(QRegExp("表達式"),"(新字符串)");


測試:

QString str("test1(97) test2(88) test3(90)");


QRegExp reg("\\(.*\\)");

reg.setMinimal(true); //默認為false,貪婪模式

str.replace(reg,"(good)");


正則表達式的含義

\\( 匹配左括號

.* 匹配任意字符任意個數(. 匹配\r \n 之外的單個字符 *匹配0次或多次)

\\) 匹配右括號


結果:

QString如何替換字符串中小括號內的字符串?

說明:

需要調用reg.setMinimal(true); 因為默認值是false表示使用貪婪模式,此模式下會一直匹配到最後一個 ) 才停止,這樣整個字符串只識別到一對括號,最終結果變成test1(good)。


QString如何替換字符串中小括號內的字符串?




分享到:


相關文章: