QString是Qtc++中用于处理字符串的类,它提供了大量的方法和操作符,使得字符串处理变得简单高效。QString类支持Unicode字符集,并且可以进行隐式的共享,这样可以减少内存消耗和拷贝开销
#include
#include
#include
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
// 1. 创建QString
QString str1 = "Hello, ";
QString str2 = "World!";
// 2. 字符串连接
QString combinedStr = str1 + str2;
qDebug() << "Combined String: " << combinedStr;
// 3. 获取字符串长度
int length = combinedStr.length();
qDebug() << "String Length: " << length;
// 4. 获取字符串的第一个和最后一个字符
QChar firstChar = combinedStr.at(0);
QChar lastChar = combinedStr.at(combinedStr.length() - 1);
qDebug() << "First Character: " << firstChar << ", Last Character: " << lastChar;
// 5. 字符串比较
bool isEqual = (str1 == str2);
bool isLess = (str1 < str2);
qDebug() << "Are str1 and str2 equal? " << isEqual;
qDebug() << "Is str1 less than str2? " << isLess;
// 6. 查找和替换字符串
QString text = "Qt is a powerful C++ framework for GUI development.";
int index = text.indexOf("C++");
text.replace("C++", "C#");
qDebug() << "Index of 'C++': " << index;
qDebug() << "Modified Text: " << text;
// 7. 字符串分割
QString csvData = "Alice,Bob,Charlie,David";
QStringList list = csvData.split(',');
qDebug() << "CSV Data Split:";
for (const QString& item : list) {
qDebug() << item;
}
// 8. 字符串大小写转换
QString mixedCase = "AbCdEfG";
QString upperCase = mixedCase.toUpper();
QString lowerCase = mixedCase.toLower();
qDebug() << "Original String: " << mixedCase;
qDebug() << "Uppercase: " << upperCase;
qDebug() << "Lowercase: " << lowerCase;
// 9. 检查字符串是否以特定前缀或后缀开始
QString fileName = "document.txt";
bool startsWith = fileName.startsWith("doc");
bool endsWith = fileName.endsWith(".txt");
qDebug() << "Starts with 'doc'? " << startsWith;
qDebug() << "Ends with '.txt'? " << endsWith;
// 10. 移除空白字符
QString stringWithWhitespace = " Trim this string ";
QString trimmedString = stringWithWhitespace.trimmed();
qDebug() << "Original String: " << stringWithWhitespace;
qDebug() << "Trimmed String: " << trimmedString;
// 11. 格式化字符串
QString formatted = QString("Today is %1 %2, %3").arg("November", "4", "2023");
qDebug() << "Formatted String: " << formatted;
// 12. 获取子字符串
QString original = "Hello, World!";
QString subString = original.mid(7, 5);
qDebug() << "Substring: " << subString;
// 13. 判断字符串是否为空
QString emptyStr;
bool isEmpty = emptyStr.isEmpty();
qDebug() << "Is the string empty? " << isEmpty;
// 14. 移除指定字符
QString stringWithDash = "Dash-String-Dash";
stringWithDash = stringWithDash.remove('-');
qDebug() << "String with Dashes Removed: " << stringWithDash;
// 15. 插入字符
QString insertStr = "Hello, World!";
insertStr.insert(5, "Awesome ");
qDebug() << "Inserted String: " << insertStr;
// 16. 字符串重复
QString repeatedStr = "abc";
repeatedStr = repeatedStr.repeated(3);
qDebug() << "Repeated String: " << repeatedStr;
// 17. 检查字符串是否包含子串
QString searchStr = "The quick brown fox";
bool contains = searchStr.contains("brown");
qDebug() << "Contains 'brown'? " << contains;
// 18. 字符串转换为整数
QString intStr = "42";
int intValue = intStr.toInt();
qDebug() << "Integer Value: " << intValue;
// 19. 字符串转换为浮点数
QString floatStr = "3.14";
float floatValue = floatStr.toFloat();
qDebug() << "Float Value: " << floatValue;
// 20. 替换多个字符
QString replaceStr = "C++, C#, Python, C++";
replaceStr = replaceStr.replace("C++", "Java", Qt::CaseInsensitive);
qDebug() << "Replaced String: " << replaceStr;
// 21. 字符串是否是数字
QString numericStr = "12345";
bool isNumeric = numericStr.isNumeric();
qDebug() << "Is Numeric? " << isNumeric;
// 22. 检查字符串是否包含空白字符
QString spaceStr = "Hello, World!";
bool hasWhitespace = spaceStr.contains(QRegExp("\\s"));
qDebug() << "Contains Whitespace? " << hasWhitespace;
// 23. 移除指定前缀
QString prefixStr = "Prefix: Data";
prefixStr.remove("Prefix: ");
qDebug() << "String with Prefix Removed: " << prefixStr;
// 24. 检查字符串是否以特定字符开始
QString startsWithStr = "Hello, World!";
bool startsWithHello = startsWithStr.startsWith("Hello");
qDebug() << "Starts with 'Hello'? " << startsWithHello;
// 25. 字符串转换为大写形式
QString mixedCaseStr = "HelloWorld";
QString upperStr = mixedCaseStr.toUpper();
qDebug() << "Uppercase String: " << upperStr;
// 26. 字符串转换为小写形式
QString mixedCaseStr2 = "HelloWorld";
QString lowerStr = mixedCaseStr2.toLower();
qDebug() << "Lowercase String: " << lowerStr;
// 27. 字符串是否以数字开头
QString numStr = "42 is the answer.";
bool startsWithNumber = numStr[0].isDigit();
qDebug() << "Starts with a number? " << startsWithNumber;
// 28. 替换所有字符
QString replaceAllStr = "C++, C++, C++";
replaceAllStr = replaceAllStr.replace("C++", "Java", Qt::CaseInsensitive, -1);
qDebug() << "All Occurrences Replaced: " << replaceAllStr;
// 29. 字符串是否为纯字母
QString alphaStr = "AlphabetsOnly";
bool isAlpha = alphaStr.isAlpha();
qDebug() << "Is Alpha Only? " << isAlpha;
// 30. 移除多个字符
QString removeChars = "Remove #$@! these characters!";
removeChars.remove(QRegExp("[#$@!]"));
qDebug() << "Removed Special Characters: " << removeChars;
// 31. 字符串是否包含特定字符
QString charStr = "Hello, World!";
bool containsChar = charStr.contains('W');
qDebug() << "Contains 'W'? " << containsChar;
// 32. 字符串是否包含数字
QString numStr2 = "This is string with number 123.";
bool containsNum = numStr2.contains(QRegExp("\\d"));
qDebug() << "Contains a Number? " << containsNum;
// 33. 移除尾部空白字符
QString trailingWhitespace = "Remove trailing spaces ";
trailingWhitespace = trailingWhitespace.trimmed();
qDebug() << "Trailing Spaces Removed: " << trailingWhitespace;
// 34. 字符串截断
QString longStr = "This is a very long string that needs to be truncated.";
longStr.truncate(20);
qDebug() << "Truncated String: " << longStr;
// 35. 获取字符串的左半部分
QString fullStr = "Hello, World!";
QString leftHalf = fullStr.left(5);
qDebug() << "Left Half: " << leftHalf;
// 36. 获取字符串的右半部分
QString fullStr2 = "Hello, World!";
QString rightHalf = fullStr2.right(6);
qDebug() << "Right Half: " << rightHalf;
// 37. 字符串是否包含字母
QString letterStr = "12345";
bool containsLetter = letterStr.contains(QRegExp("[A-Za-z]"));
qDebug() << "Contains a Letter? " << containsLetter;
// 38. 字符串是否包含特定前缀
QString prefix = "Prefix: Data";
bool hasPrefix = prefix.startsWith("Prefix:");
qDebug() << "Has Prefix? " << hasPrefix;
// 39. 字符串是否以特定字符结尾
QString endsWithStr = "Hello, World!";
bool endsWithComma = endsWithStr.endsWith(',');
qDebug() << "Ends with ','? " << endsWithComma;
// 40. 获取字符串的子字符串
QString sourceStr = "Hello, World!";
QString subStr = sourceStr.mid(7, 5);
qDebug() << "Substring: " << subStr;
// 41. 替换第一个匹配
QString replaceFirstStr = "C++, C++, C++";
replaceFirstStr.replace("C++", "Java", Qt::CaseInsensitive);
qDebug() << "First Occurrence Replaced: " << replaceFirstStr;
// 42. 字符串是否以特定字符结束
QString endsWithStr2 = "Hello, World!";
bool endsWithExclamation = endsWithStr2.endsWith('!');
qDebug() << "Ends with '!'? " << endsWithExclamation;
// 43. 删除字符串的左半部分
QString leftTrimStr = " Left trim this string";
leftTrimStr = leftTrimStr.trimmed();
qDebug() << "Left Trimmed String: " << leftTrimStr;
// 44. 获取字符串的重复
QString repeatStr = "abc";
QString repeatedStr = repeatStr.repeated(3);
qDebug() << "Repeated String: " << repeatedStr;
// 45. 替换第n个匹配
QString replaceNthStr = "C++, C++, C++";
replaceNthStr.replace(QRegExp("C\\+\\+"), "Java", 2);
qDebug() << "Second Occurrence Replaced: " << replaceNthStr;
// 46. 移除特定前缀
QString prefixStr2 = "Prefix: Data";
prefixStr2.remove(0, 7);
qDebug() << "String with Prefix Removed: " << prefixStr2;
// 47. 获取字符串的重复
QString repeatStr2 = "abc";
QString repeatedStr2 = repeatStr2.repeated(3);
qDebug() << "Repeated String: " << repeatedStr2;
// 48. 替换所有字母
QString replaceLetters = "Replace all letters in this string";
replaceLetters.replace(QRegExp("[A-Za-z]"), "*");
qDebug() << "Letters Replaced with '*': " << replaceLetters;
// 49. 检查字符串是否为十六进制数
QString hexStr = "1A3F";
bool isHex = hexStr.contains(QRegExp("^[0-9A-Fa-f]+$"));
qDebug() << "Is Hexadecimal Number? " << isHex;
// 50. 字符串拼接
QStringList words;
words << "The" << "quick" << "brown" << "fox" << "jumps" << "over" << "the" << "lazy" << "dog";
QString joinedWords = words.join(" ");
qDebug() << "Joined Words: " << joinedWords;
return a.exec();
}
#include
#include
#include
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
// 1. 字符串拼接多个元素
QStringList words;
words << "The" << "quick" << "brown" << "fox" << "jumps" << "over" << "the" << "lazy" << "dog";
QString joinedWords = words.join(" ");
qDebug() << "Joined Words: " << joinedWords;
// 2. 使用正则表达式提取匹配项
QString text = "Emails: [email protected], [email protected]";
QRegExp rx("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}");
QStringList emails;
int pos = 0;
while ((pos = rx.indexIn(text, pos)) != -1) {
emails << rx.cap(0);
pos += rx.matchedLength();
}
qDebug() << "Extracted Emails: " << emails;
// 3. 字符串转换为HTML
QString plainText = "This is bold and italic text.";
QString htmlText = QString("%1").arg(plainText);
qDebug() << "HTML Text: " << htmlText;
// 4. 字符串到日期时间的转换
QString dateTimeStr = "2023-11-04T10:30:00";
QDateTime dateTime = QDateTime::fromString(dateTimeStr, "yyyy-MM-ddTHH:mm:ss");
qDebug() << "Parsed DateTime: " << dateTime.toString();
// 5. 将多行文本分割为行
QString multiLineText = "Line 1\nLine 2\nLine 3";
QStringList lines = multiLineText.split("\n", QString::SkipEmptyParts);
qDebug() << "Split Lines: " << lines;
// 6. 使用逗号分隔的字符串转换为QStringList
QString csvData = "Alice,Bob,Charlie,David";
QStringList list = csvData.split(',');
qDebug() << "CSV Data as QStringList: " << list;
// 7. 去除特定字符
QString stringWithDashes = "This-is-some-text";
stringWithDashes.remove('-');
qDebug() << "String with Dashes Removed: " << stringWithDashes;
// 8. 生成随机字符串
QString randomString;
const QString possibleCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
for (int i = 0; i < 10; ++i) {
int index = qrand() % possibleCharacters.length();
QChar nextChar = possibleCharacters.at(index);
randomString.append(nextChar);
}
qDebug() << "Random String: " << randomString;
// 9. 将QStringList元素连接为一个字符串
QStringList fruits = {"Apple", "Banana", "Cherry"};
QString fruitString = fruits.join(", ");
qDebug() << "Joined Fruits: " << fruitString;
// 10. 使用QString的remove()函数去除特定子串
QString textToModify = "This is an example. This is another example.";
textToModify.remove("This");
qDebug() << "Modified Text: " << textToModify;
return a.exec();
}