正則表達式處理輸入十六進制數,每隔2個數字隔開

QString SysUtils::formatHexString(const QString &hex)
{
    QString hexStr(hex);

    QRegExp rx("([0-9A-Fa-f]{1,2})");
    QStringList list;
    int pos = 0;

    while ((pos = rx.indexIn(hexStr, pos)) != -1) {
        list << rx.cap(1);
        pos += rx.matchedLength();
    }
    return list.join(" ");
}
 
void MainWindow::HandleText()
{
    disconnect (ui->SendtextEdit,SIGNAL(textChanged()),this,SLOT(HandleText()));

QTextCursortextCursor=ui->SendtextEdit->textCursor();

    intrecordPos=textCursor.position();//記錄光標位置

    QStringtxt=ui->SendtextEdit->toPlainText();//讀取待處理字符串

    QStringtmp=txt;

    tmp=tmp.replace("","");//去掉待處理字符串空格

    QStringhexStr=SysUtils::formatHexString(tmp);

    ui->SendtextEdit->setText(hexStr);

    if(recordPos>0)

    {

        QStringch=hexStr.mid(recordPos-1,1);

        qDebug()<<ch;

        if(ch=="")

            recordPos++;

    }

    textCursor.setPosition(recordPos);

    ui->SendtextEdit->setTextCursor(textCursor);

connect (ui->SendtextEdit,SIGNAL(textChanged()),this,SLOT(HandleText()));

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章