在Qt框架中,QString
类的 split
方法用于根据指定的分隔符将字符串分割成多个子字符串,并将这些子字符串存储在一个 QStringList
对象中。这个方法非常有用,特别是当你需要根据某个特定字符或字符串来解析文本时。
基本用法
以下是 split
方法的基本用法:
QString str = "apple_banana_cherry"; | |
QStringList list = str.split("_"); | |
// list 现在包含 ["apple", "banana", "cherry"] |
参数
split
方法可以接收一个或两个参数:
- 分隔符:指定用于分割字符串的字符或字符串。
- 分割行为(可选):指定如何处理空字段和尾随的空字符串。这个参数是一个
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
方法能够正确地处理包含逗号或分号分隔的字符串,即使这些分隔符后面跟有空白字符。