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

重写旧工具:如何实现文件名与ID的动态空格对齐格式化输出?

解决C#中文件名与十六进制ID的动态对齐输出问题

你重写旧工具时遇到了格式化输出的问题:需要实现文件名与对应十六进制ID的空格分隔输出,短文件名和长文件名都要保证与ID之间有空格(长文件名不能和ID直接相连),且符合原工具“当文件名距离ID区域仅1字符时添加14个空格”的逻辑。当前使用固定宽度的格式化字符串导致长文件名与ID相连,短文件名的空格数也不符合预期。

解决方案

核心思路是动态计算文件名与ID之间的空格数,替代固定宽度的格式化方式,逻辑如下:

  1. 设定ID的起始列(可根据预期输出调整),比如假设ID从第35列开始;
  2. 如果文件名长度加1(至少一个空格)小于ID起始列,说明有足够空间,填充空格到ID起始列;
  3. 如果文件名长度加1大于等于ID起始列,说明距离ID区域仅1字符,添加14个空格;
  4. 确保至少有1个空格,避免极端情况下无空格的问题。

对应的C#代码:

for(int i = 0; i < files.Length; i++)
{
    string fileLabel = files[i];
    int idStartColumn = 35; // 可根据预期输出调整这个值
    int spacesNeeded;

    if (fileLabel.Length + 1 < idStartColumn)
    {
        // 填充空格到ID起始列
        spacesNeeded = idStartColumn - fileLabel.Length;
    }
    else
    {
        // 距离ID区域过近,添加14个空格
        spacesNeeded = 14;
    }

    // 确保至少有1个空格分隔
    spacesNeeded = Math.Max(spacesNeeded, 1);
    string spaces = new string(' ', spacesNeeded);
    
    ws.WriteLine($"{fileLabel}{spaces}{GetHexNumber(0x1A000000 + i)}");
}

说明

  • 若ID的对齐位置不符合预期,可调整idStartColumn的值,比如希望短文件名后的空格更少,就减小这个数值;
  • 这种方式既解决了长文件名与ID相连的问题,也匹配你推测的原工具逻辑;
  • 使用new string(' ', spacesNeeded)生成指定数量的空格,严格保证用空格而非制表符分隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:00:56