Delphi 中 Format 函数的用法详解
Delphi 中 Format 函数的用法详解Format 是 Delphi 中用于格式化字符串的常用函数,功能类似于 C 语言的 printf 或 C# 的 String.Format。
基本语法
function Format(const FormatStr: string; const Args: array of const): string;参数说明
[*]FormatStr:格式字符串,包含普通文本和格式说明符
[*]Args:可变参数数组,提供要格式化的值
格式说明符语法
格式说明符基本形式:%[-][.precision]type
常用格式类型
类型说明示例d十进制整数Format('%d', ) → '10'x十六进制小写Format('%x', ) → 'ff'X十六进制大写Format('%X', ) → 'FF'e科学计数法Format('%e', ) → '1.234567E+03'f浮点数Format('%f', ) → '1234.567'g通用格式Format('%g', ) → '1234.567'n千位分隔Format('%n', ) → '1,234.567'm货币格式Format('%m', ) → '¥1,234.57' (取决于区域设置)p指针地址Format('%p', [@MyVar]) → '0012FEC0's字符串Format('%s', ['Delphi']) → 'Delphi'使用示例
基本示例
var
s: string;
begin
s := Format('姓名:%s,年龄:%d岁', ['张三', 25]);
// 结果:'姓名:张三,年龄:25岁'
end;指定参数索引
s := Format('%0:d %1:d %0:d', );
// 结果:'10 20 10'控制宽度和对齐
s := Format('%-10s%10d', ['测试', 123]);
// 结果:'测试 123'(左对齐和右对齐)浮点数格式化
s := Format('%.2f', );
// 结果:'3.14'(保留2位小数)
s := Format('%8.2f', );
// 结果:' 3.14'(总宽度8,右对齐)日期时间格式化
s := Format('日期:%s,时间:%s',
);多参数复杂格式
s := Format('产品:%s,单价:%m,库存:%d件,占比:%.1f%%',
['手机', 3999.99, 150, 75.5]);
// 结果:'产品:手机,单价:¥3,999.99,库存:150件,占比:75.5%'注意事项
[*]单元引用:Format 函数位于 System.SysUtils 单元
[*]参数匹配:格式说明符数量必须与参数数量匹配
[*]性能考虑:频繁调用时,考虑使用 TStringBuilder
[*]本地化:某些格式(如货币、日期)受系统区域设置影响
[*]错误处理:不匹配的格式可能导致异常
高级用法
自定义日期格式
s := FormatDateTime('yyyy-mm-dd hh:nn:ss', Now);格式化数组
var
arr: array of Integer;
begin
arr := 10;
arr := 20;
arr := 30;
s := Format('数组:%d,%d,%d', , arr, arr]);
end;Format 是 Delphi 字符串处理中最强大和灵活的函数之一,掌握它可以极大地简化复杂的字符串构建任务。
Delphi 格式说明符详解
格式说明符的基本形式为:%[-][.precision]type。下面我将详细解释每个部分的含义:
1. % - 起始符号
[*]每个格式说明符都必须以百分号 % 开头
2. - 参数索引(可选)
[*]用于指定使用哪个参数(从0开始)
[*]格式:数字后跟冒号(如 0:、1:)
[*]示例:Format('%1:s %0:s', ['World', 'Hello'])// 结果为 "Hello World"
3. [-] - 对齐方式(可选)
[*]- 表示左对齐,默认是右对齐
[*]示例:Format('%-10s', ['Hi'])// "Hi " (左对齐,总宽度10)
Format('%10s', ['Hi']) // " Hi" (右对齐,总宽度10)
4. - 最小宽度(可选)
[*]指定输出内容的最小宽度(字符数)
[*]如果实际内容比宽度短,会用空格填充
[*]示例:Format('%5d', )// " 42" (总宽度5)
5. [.precision] - 精度(可选)
[*]对于浮点数:指定小数位数
[*]对于字符串:指定最大字符数
[*]格式:小数点后跟数字
[*]示例:Format('%.2f', )// "3.14" (保留2位小数)
Format('%.5s', ['Delphi'])// "Delph" (最多5个字符)
6. type - 格式类型(必需)
[*]指定如何格式化参数,必须的最后一个字符
[*]常用类型:
[*]d:十进制整数
[*]x/X:十六进制(小写/大写)
[*]e/E:科学计数法
[*]f:固定小数位数
[*]g/G:通用格式(自动选择最短表示)
[*]n:带千位分隔符的数字
[*]m:货币格式
[*]p:指针地址
[*]s:字符串
综合示例
var
s: string;
begin
// 参数索引:1,左对齐,总宽度15,保留3位小数
s := Format('%1:-15.3f', );
// 结果:"123.457 " (使用第二个参数,左对齐,宽度15)
// 参数索引:0,右对齐,总宽度10,十六进制大写
s := Format('%0:10X', );
// 结果:" FF" (右对齐,宽度10)
// 字符串,最大长度4
s := Format('%.4s', ['Programming']);
// 结果:"Prog"
end;注意事项
[*]方括号 [] 表示该部分是可选的,实际使用时不需要写这些括号
[*]参数索引从0开始
[*]宽度和精度都可以用*代替,此时从参数中获取值:Format('%*.*f', )// " 3.14" (宽度8,精度2)
[*]要显示百分号本身,需要使用 %%
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]