最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT中QString按照空格和Tab拆分

 更新時間:2026年01月13日 09:59:44   作者:CSDN_RTKLIB  
本文主要介紹了Qt中QString::split()方法的使用,包括按空格、Tab鍵以及同時按空格和Tab鍵拆分字符串的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在 Qt 中,QString::split() 方法支持按指定分隔符拆分字符串,按空格和Tab 鍵拆分的核心是指定正確的分隔符,并根據(jù)需求處理連續(xù)分隔符的情況。以下是詳細用法和示例:

一、核心知識點

  • QString::split(const QString &sep, SplitBehavior behavior = KeepEmptyParts):
    • sep:分隔符(空格用 " ",Tab 用 "\t")
    • behavior:拆分行為(關鍵!處理連續(xù)分隔符)
      • KeepEmptyParts(默認):保留空字符串(如連續(xù)空格會拆出空項)
      • SkipEmptyParts:跳過空字符串(實際開發(fā)中更常用,避免無用空項)

二、按空格拆分(" ")

1. 基礎用法(跳過連續(xù)空格)

最常用場景:拆分以一個或多個空格分隔的字符串(如命令行參數(shù)、空格分隔的文本)。

#include <QString>
#include <QStringList>
#include <QDebug>

int main() {
    QString str = "Hello  World   Qt  編程助手"; // 包含1個、2個、3個連續(xù)空格
    // 按空格拆分,跳過空項(SplitBehavior::SkipEmptyParts)
    QStringList result = str.split(" ", Qt::SkipEmptyParts);
    
    // 輸出結果:["Hello", "World", "Qt", "編程助手"]
    qDebug() << "按空格拆分結果:" << result;
    return 0;
}

2. 保留空項(默認行為)

如果需要保留連續(xù)空格產(chǎn)生的空字符串(極少用):

QString str = "a  b c";
QStringList result = str.split(" "); // 不指定behavior,默認KeepEmptyParts
// 輸出結果:["a", "", "b", "c"](兩個空格之間拆出空項)
qDebug() << result;

三、按 Tab 鍵拆分("\t")

Tab 鍵的轉義字符是 "\t",用法與空格完全一致,僅需替換分隔符。

1. 基礎用法(跳過連續(xù) Tab)

#include <QString>
#include <QStringList>
#include <QDebug>

int main() {
    QString str = "姓名\t年齡\t\t性別\t職業(yè)"; // 包含1個、2個連續(xù)Tab
    // 按Tab拆分,跳過空項
    QStringList result = str.split("\t", Qt::SkipEmptyParts);
    
    // 輸出結果:["姓名", "年齡", "性別", "職業(yè)"]
    qDebug() << "按Tab拆分結果:" << result;
    return 0;
}

2. 保留空項(默認行為)

QString str = "x\ty\t\tz";
QStringList result = str.split("\t"); // 保留空項
// 輸出結果:["x", "y", "", "z"](兩個Tab之間拆出空項)
qDebug() << result;

四、進階:同時按空格和 Tab 拆分

如果需要同時拆分空格和 Tab(比如處理混合分隔符的文本),可以用 QRegExp 作為分隔符:

#include <QRegExp>

QString str = "Hello\tWorld  Qt\t\t編程助手";
// 匹配一個或多個空格或Tab(\\s 表示空白字符,包含空格、Tab、換行等)
QStringList result = str.split(QRegExp("\\s+"), Qt::SkipEmptyParts);
// 輸出結果:["Hello", "World", "Qt", "編程助手"]
qDebug() << result;

總結

拆分需求代碼示例關鍵說明
按空格拆分(去空項)str.split(" ", Qt::SkipEmptyParts)處理連續(xù)空格
按 Tab 拆分(去空項)str.split("\t", Qt::SkipEmptyParts)處理連續(xù) Tab
同時按空格+Tab 拆分str.split(QRegExp("\\s+"), Qt::SkipEmptyParts)匹配所有空白字符

開發(fā)建議:優(yōu)先使用 Qt::SkipEmptyParts,避免拆分后出現(xiàn)無用的空字符串,減少后續(xù)處理麻煩。

五、解讀

QStringList result = str.split(QRegExp("\\s+"), Qt::SkipEmptyParts);

這行代碼既能匹配所有空白字符,也能完美處理字符間多個連續(xù)空格、多個連續(xù)Tab,以及空格與Tab混合的情況,核心原因的是正則表達式 \\s+ 的設計:

1. 先明確兩個關鍵規(guī)則(對應你的疑問)

正則部分作用說明
\\s匹配 所有空白字符(Qt的QRegExp中,\s 等價于 [ \t\n\r\f]):
- 普通空格( )、Tab(\t)
- 換行(\n)、回車(\r)、換頁符(\f)
(如果只想匹配“空格+Tab”,不想包含換行/回車,可改成 [ \\t]+)
+匹配 一個或多個連續(xù) 的前面字符(即連續(xù)的空白字符會被當成“一個整體分隔符”)
Qt::SkipEmptyParts強制跳過拆分后可能產(chǎn)生的空字符串(結合 \\s+ 幾乎不會出現(xiàn)空項,但加上更穩(wěn)妥)

2. 實際示例(覆蓋你關心的場景)

假設字符串包含 多個空格、多個Tab、空格+Tab混合,拆分效果如下:

#include <QString>
#include <QStringList>
#include <QRegExp>
#include <QDebug>

int main() {
    // 測試字符串:包含 2個空格、3個Tab、空格+Tab混合(中間無其他字符)
    QString str = "Hello  World\t\t\tQt  \t編程助手\nTest\rFoo\fBar";
    
    // 按正則拆分
    QStringList result = str.split(QRegExp("\\s+"), Qt::SkipEmptyParts);
    
    // 輸出結果:["Hello", "World", "Qt", "編程助手", "Test", "Foo", "Bar"]
    qDebug() << "拆分結果:" << result;
    return 0;
}

可以看到:

  • 連續(xù)2個空格(Hello World)→ 當成1個分隔符,拆出 HelloWorld;
  • 連續(xù)3個Tab(World\t\t\tQt)→ 當成1個分隔符,拆出 WorldQt
  • 空格+Tab混合(Qt \t編程助手)→ 當成1個分隔符,拆出 Qt編程助手;
  • 換行(\n)、回車(\r)、換頁符(\f)也被當成分隔符(如果不需要這些,后面會說怎么調整)。

3. 補充:如果只想匹配“空格+Tab”(排除換行/回車等)

如果你的場景中,換行(\n)、回車(\r)是有效內容,不想被當成分隔符,只需把正則改成 [ \\t]+(明確只匹配“空格”和“Tab”):

// 只匹配空格和Tab,不匹配換行/回車
QStringList result = str.split(QRegExp("[ \\t]+"), Qt::SkipEmptyParts);

比如上面的測試字符串,拆分后會保留換行后的內容(因為 \n 不再是分隔符):

// 輸出結果:["Hello", "World", "Qt", "編程助手\nTest\rFoo\fBar"]

總結

  • 你的核心疑問:是!str.split(QRegExp("\\s+"), Qt::SkipEmptyParts) 完全滿足需求——匹配所有空白字符,且多個連續(xù)空格、多個Tab、空格+Tab混合,都會被當成“一個分隔符”處理,拆分后不會有多余空項。
  • 實用建議:
    1. 處理“任意空白字符分隔”(包括換行/回車)→ 用 \\s+;
    2. 只處理“空格+Tab分隔”(排除換行等)→ 用 [ \\t]+;
    3. 該寫法是處理“混合空白字符分隔”的最優(yōu)方案,比單獨按空格或Tab拆分更通用。

到此這篇關于QT中QString按照空格和Tab拆分的文章就介紹到這了,更多相關QT QString空格和Tab拆分內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

最新評論

白朗县| 巴彦淖尔市| 会宁县| 邢台县| 文成县| 襄汾县| 本溪| 时尚| 江油市| 江油市| 新余市| 玉龙| 资溪县| 锦州市| 普定县| 闵行区| 六枝特区| 大田县| 汝南县| 襄汾县| 龙岩市| 曲水县| 图片| 大城县| 吴江市| 平湖市| 乐平市| 吴川市| 墨脱县| 专栏| 徐汇区| 通城县| 玉环县| 湖南省| 柳河县| 南阳市| 巴彦淖尔市| 宁都县| 玛多县| 塔河县| 大渡口区|