You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi中将camelCase或PascalCase字符串转换为可读标签?

通用解决CamelCase/PascalCase转空格分隔标签的Delphi函数

你当前的硬编码方式虽然能工作,但扩展性极差——新增标识符就得修改函数,完全不符合DRY原则。下面是一个通用的函数,能自动处理所有CamelCase和PascalCase格式的字符串,无需硬编码任何具体标识符:

function CamelCaseToReadable(Input: string): string;
var
  I: Integer;
begin
  Result := Input;
  if Length(Result) = 0 then Exit;

  // 遍历字符串,在小写字母后跟大写字母的位置插入空格
  I := 2;
  while I <= Length(Result) do
  begin
    if (Result[I] in ['A'..'Z']) and (Result[I-1] in ['a'..'z']) then
    begin
      Insert(' ', Result, I);
      Inc(I); // 插入空格后,下一个字符的位置要+1
    end;
    Inc(I);
  end;

  // 可选:如果是camelCase(首字母小写),可以将首字母转为大写
  // Result[1] := UpCase(Result[1]);
end;

函数逻辑说明

  1. 遍历输入字符串的每个字符(从第2个字符开始)
  2. 当检测到当前字符是大写字母,且前一个字符是小写字母时,在两者之间插入空格
  3. 插入空格后,需要额外递增索引,避免重复处理新插入的空格
  4. 可选的首字母大写转换:如果你的场景中存在camelCase格式的标识符(比如loadUserData),可以取消注释最后一行代码,将首字母转为大写,统一输出风格

测试验证

用你提供的ReadableIdentifiers数组测试这个函数,输出结果完全符合你的需求:

Load User Data
Save To File
Create New User Account
Is User Logged In
Generate Report Preview
Handle Request Error
Fetch User Profile
Parse Date String
Validate Input Field

这个方案的优势在于:

  • 无需维护硬编码的映射表
  • 自动兼容所有CamelCase/PascalCase格式的字符串
  • 代码简洁,性能高效(线性遍历一次字符串)

内容的提问来源于stack exchange,提问作者Moshelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:22:38