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

C#实现移除ListBox项前编号与空格并重新编号

解决ListBox移除旧编号并重新编号的问题

原代码的问题

你原来的代码用固定的Substring(4)截取字符,没法适配不同长度的编号和空格组合:

  • 1-9的编号加3-4个空格,总长度是4或5,截取4位会留下多余空格;
  • 10-99的编号加2-3个空格,总长度是4或5,截取4位可能会误删内容开头的字符。
    另外,循环中直接修改ListBox的Items集合,容易导致索引混乱,出现处理遗漏或重复的问题。

正确的实现方法

用正则表达式匹配开头的数字和任意数量的空格,先提取出纯内容,再重新添加带规范编号的项:

private void button43_Click(object sender, EventArgs e)
{
    // 收集所有处理后的纯内容
    List<string> cleanedContents = new List<string>();
    foreach (var item in listBox1.Items)
    {
        string originalText = item.ToString();
        // 匹配开头的数字+任意数量空格,替换为空,保留后面的内容
        string pureContent = System.Text.RegularExpressions.Regex.Replace(originalText, @"^\d+\s+", "");
        cleanedContents.Add(pureContent);
    }

    // 清空原有项,重新添加带新编号的内容
    listBox1.Items.Clear();
    for (int i = 0; i < cleanedContents.Count; i++)
    {
        // 按"编号 + 空格 + 内容"的格式添加
        listBox1.Items.Add($"{i + 1} {cleanedContents[i]}");
    }
}

代码说明

  1. 正则匹配:@"^\d+\s+"的意思是匹配字符串开头的一个或多个数字,后面跟着一个或多个空格,把这部分直接替换为空,就能得到去掉旧编号和空格的纯内容。
  2. 重新编号:先把所有纯内容收集到列表里,清空ListBox后,再按顺序给每个内容加上从1开始的连续编号,格式统一规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:22:53