比如qstring str = 「123你好456你好」我們要從這個str中提取出「123456」
qstring str=
「123你好456你好」;
qstring tmp;
for(
intj=0
;j<
str.length();
j++)
這樣tmp中存放的就是「123456」。
在使用qt creator程式設計時,難免會用到將float型別轉換為qstring型別的時候下面是我所有的方法:
1. 將qstring型別轉化為float型別,很簡單
qstring data;
float num = data.tofloat();
即可很輕鬆的實現。
2. 但是如何將float型別轉化為qstring型別呢?
檢視api很難發現封裝好的轉化函式
可以嘗試使用下面的**轉化:
float num = 1.222;
qstring data = qstring("float is %1").arg(num);
輸出結果是:float is 1.222
如果只要float轉化成的數值,則使用如下:
qstring data = qstring("%1").arg(num);
保留小數點後兩位
double/float size = 2.3334524;
qstring str = qstring::number(size, 'f', 2);
其中f代表非科學計數法格式,2代表小數點後兩位。
聽說用正規表示式qregexp也可實現。
"^\d+$" //非負整數(正整數 + 0)
"^[0-9]*[1-9][0-9]*$" //正整數
"^((-\d+)|(0+))$" //非正整數(負整數 + 0)
"^-[0-9]*[1-9][0-9]*$" //負整數
"^-?\d+$" //整數
"^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數
"^(-?\d+)(\.\d+)?$" //浮點數
"^[a-za-z]+$" //由26個英文本母組成的字串
"^[a-z]+$" //由26個英文本母的大寫組成的字串
"^[a-z]+$" //由26個英文本母的小寫組成的字串
"^[a-za-z0-9]+$" //由數字和26個英文本母組成的字串
"^\w+$" //由數字、26個英文本母或者下劃線組成的字串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email位址
"^[a-za-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$" //url
"^(d|d)-((0([1-9]))|(1[1|2]))-(([0-2]([1-9]))|(3[0|1]))$" // 年-月-日
"^((0([1-9]))|(1[1|2]))/(([0-2]([1-9]))|(3[0|1]))/(d|d)$" // 月/日/年
"^([w-.]+)@(([[0-9].[0-9].[0-9].)|(([w-]+.)+))([a-za-z]|[0-9])(]?)$"
"(d+-)?(d-?d|d-?d|^d)(-d+)?"
//**號碼
"^(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5])$"
//ip位址
^([0-9a-f])(-[0-9a-f])$
//mac位址的正規表示式
^[-+]?\d+(\.\d+)?$ //值型別正規表示式
qregexp是qt的正規表示式類.
qt中有兩個不同類的正規表示式.
第一類為元字元.它表示乙個或多個常量表示式.
令一類為 轉義字元,它代表乙個特殊字元.
一.元字元
. 匹配任意單個字元.例如, 1.3 可能是1. 後面跟任意字元,再跟3
^ 匹配字串首. 例如, ^12可能是123,但不能是312
$ 配字串尾. 例如, 12$可以是312, 當不能是 123
匹配括號內輸入的任意字元.[123]可以為1, 2 或3
* 匹配任意數量的前導字元. 例如, 1*2可以為任意數量個1(甚至沒有), 後面跟乙個2
+ 匹配至少乙個前導字元. 例如, 1+2必須為乙個或多個1, 後跟乙個2
? 匹配乙個前導字元或為空. 例如 1?2可以為2或這12
二.統配模式
通過 qregexp::setpatternsyntax(qregexp::wildcard);可以將元字元設定為統配模式.在統配模式下,只有3個元字 符可以使用.他們的功能沒有變化.
? 匹配任意單個字元, 例如, 1?2可以為1,後面跟任意單個字元, 再跟2
* 匹配任意乙個字串行. 例如, 1*2, 可以為1, 後面跟任意數量的字元, 再跟乙個2
匹配乙個定義的字元集合. 例如, [a-za-z\.]可以匹配 a到z之間任意乙個字元和. [^a]匹配出小寫a以外的字元.
三.轉義序列
\. 匹配"."
\^ 匹配"^"
\$ 匹配"$"
\[ 匹配"["
\] 匹配"]"
\* 匹配"*"
\+ 匹配"+"
\? 匹配"?"
\b 匹配響鈴字元,使計算機發出嘟的一聲.
\t 製表符號
\n 換行符號
\r 回車符鉿
\s 任意空格
\xnn 匹配16進製為nn的字元
\0nn 匹配8進製的nn字元
這些表示式均以\開始, 與c++的轉義字元相同,所以為了定義qregexp中的乙個轉義序列,
需要在前面新增兩個\\
qregexp括號匹配 QT正規表示式 正則式
示例 qregexp regusername 0 9,a z,a z qregexp regpassword 0 9 ui login user setvalidator new qregexpvalidator regusername,this ui login pass setvalidator...
js 正則匹配
isnumber 是否為數字 regexps.isnumber d d isint 是否為整形 regexps.isint d istime 是否為時間格式 regexps.istime d d d s d d d isdate 是否為日期格式 regexps.isdate d d d isemai...
perl正則匹配
字元的種類是一定的,無非是空格,數字,大小寫字母,和perl中定義的元字元,還有本國語言。所以原則上任何格式的字元都能匹配。匹配工具 選擇符號,關鍵字,量詞,斷言,轉義字元 當出現多個字元組成的 非空格字元時候,例如123,45 3 s sdgg 則使用 0 9a za z 若加上 則只能匹配一行中...