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

QT中QString按照空格和Tab拆分

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

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

一、核心知識(shí)點(diǎn)

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

二、按空格拆分(" ")

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

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

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

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

2. 保留空項(xiàng)(默認(rèn)行為)

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

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

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

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

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

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

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

2. 保留空項(xiàng)(默認(rèn)行為)

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

四、進(jìn)階:同時(shí)按空格和 Tab 拆分

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

#include <QRegExp>

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

總結(jié)

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

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

五、解讀

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

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

1. 先明確兩個(gè)關(guān)鍵規(guī)則(對(duì)應(yīng)你的疑問)

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

2. 實(shí)際示例(覆蓋你關(guān)心的場(chǎng)景)

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

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

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

可以看到:

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

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

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

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

比如上面的測(cè)試字符串,拆分后會(huì)保留換行后的內(nèi)容(因?yàn)?\n 不再是分隔符):

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

總結(jié)

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

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

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

会同县| 眉山市| 会理县| 阳城县| 新乡市| 栖霞市| 眉山市| 边坝县| 共和县| 板桥市| 承德市| 简阳市| 德州市| 株洲县| 大连市| 波密县| 新安县| 闻喜县| 浦北县| 乌什县| 柞水县| 邛崃市| 新民市| 邵阳市| 桃园县| 安徽省| 那坡县| 哈巴河县| 鸡东县| 乐业县| 阿瓦提县| 富裕县| 舞钢市| 武功县| 朝阳市| 武威市| 汝南县| 凤庆县| 吉水县| 新巴尔虎右旗| 双江|