QML 字符串格式化
在 QML 中,处理字符串格式化有多种方法,以下是常用的字符串格式化函数和技巧:
1. 基本字符串连接
qml
var str = "Hello, " + "QML!"; // 简单连接
var name = "Alice";
var greeting = `Hello, ${name}`; // 模板字符串(ES6语法)
2. String
对象方法
QML 支持 JavaScript 的所有字符串方法:
qml
// 转换大小写
"hello".toUpperCase() // "HELLO"
"HELLO".toLowerCase() // "hello"// 去除空格
" hello ".trim() // "hello"// 字符串长度
"hello".length // 5// 获取子字符串
"hello".substring(1, 3) // "el"// 查找和替换
"hello".indexOf("l") // 2
"hello".replace("l", "x") // "hexlo"
3. 数字格式化
使用 Number
方法
qml
var num = 123.456;
num.toFixed(2) // "123.46" (保留2位小数)
num.toPrecision(4) // "123.5" (4位有效数字)
使用 Qt.formatNumber()
qml
import QtQuick 2.15Text {text: Qt.formatNumber(1234.567, 2) // "1,234.57" (本地化格式)
}
4. 日期时间格式化
如前面所述,使用:
qml
Qt.formatDateTime(date, format)
Qt.formatDate(date, format)
Qt.formatTime(date, format)
5. qsTr()
国际化翻译
qml
Text {text: qsTr("Hello World") // 可翻译字符串
}
6. String.arg()
参数替换
Qt 提供了类似 C++ 的格式化方式:
qml
Text {text: "%1 %2".arg("Hello").arg(123) // "Hello 123"
}
支持的功能:
-
位置参数 (
%1
,%2
等) -
字段宽度和精度 (
%1.2f
) -
进制转换 (
%x
十六进制,%o
八进制)
7. 正则表达式
qml
var regex = /(\d+)/g;
var matches = "abc123def456".match(regex); // ["123", "456"]
8. JSON 格式化
qml
var obj = {name: "Alice", age: 25};
var jsonStr = JSON.stringify(obj); // 转为JSON字符串
var newObj = JSON.parse(jsonStr); // 解析JSON
9. 自定义格式化函数
可以创建自己的格式化工具函数:
qml
function formatPrice(value) {return "$" + value.toFixed(2);
}Text {text: formatPrice(12.5) // "$12.50"
}