QT 如何根据某个特定的字符来解析文本(split )

在Qt框架中,QString 类的 split 方法用于根据指定的分隔符将字符串分割成多个子字符串,并将这些子字符串存储在一个 QStringList 对象中。这个方法非常有用,特别是当你需要根据某个特定字符或字符串来解析文本时。

基本用法

以下是 split 方法的基本用法:

QString str = "apple_banana_cherry";
QStringList list = str.split("_");
// list 现在包含 ["apple", "banana", "cherry"]

参数

split 方法可以接收一个或两个参数:

  1. 分隔符:指定用于分割字符串的字符或字符串。
  2. 分割行为(可选):指定如何处理空字段和尾随的空字符串。这个参数是一个 QString::SplitBehavior 枚举值,可以是 QString::KeepEmptyParts 或 QString::SkipEmptyParts。如果省略此参数,则默认为 QString::SkipEmptyParts

示例

示例 1:使用默认参数
QString str = "apple_banana__cherry";
QStringList list = str.split("_");
// list 现在包含 ["apple", "banana", "", "cherry"]
// 注意:由于默认行为是 SkipEmptyParts,但这里我们有两个下划线,
// 所以结果中只包含了一个空字符串(第二个下划线之前的那个)
示例 2:指定分割行为
QString str = "apple_banana__cherry";
QStringList list = str.split("_", QString::KeepEmptyParts);
// list 现在包含 ["apple", "banana", "", "", "cherry"]
// 由于指定了 KeepEmptyParts,所以两个下划线之间都产生了一个空字符串
示例 3:使用正则表达式作为分隔符

虽然 split 方法本身不接受正则表达式作为分隔符,但你可以使用 QRegExp 和 QString::split(const QRegExp &rx, SplitBehavior behavior = SkipEmptyParts) 重载版本来实现更复杂的分割需求。

QString str = "apple, banana; cherry";
QRegExp rx("[,;]\\s*"); // 匹配逗号或分号,后面可以跟任意数量的空白字符
QStringList list = str.split(rx);
// list 现在包含 ["apple", "banana", "cherry"]

在这个例子中,我们使用了正则表达式 [,;]\\s* 来匹配逗号或分号,以及它们后面的任意数量的空白字符(如空格、制表符等)。这使得 split 方法能够正确地处理包含逗号或分号分隔的字符串,即使这些分隔符后面跟有空白字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值