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

C#字符串替换为等长下划线问题及Hangman游戏实现优化咨询

问题分析与优化方案

原代码无效的原因

你最初的代码有两个关键问题:

  1. sb.Replace(str, "_", 0, str.Length) 的逻辑是查找整个字符串"hello"并替换为单个下划线,而非把每个字符逐一替换成下划线。
  2. 最后输出的是原字符串 str,而非修改后的StringBuilder内容(需要调用 sb.ToString() 才能获取修改后的结果)。

修正后的初始代码可以这样写:

using System;
using System.Text;

namespace randomtesting
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string str = "hello";
            StringBuilder sb = new StringBuilder(str);
            // 遍历每个字符替换为下划线
            for (int i = 0; i < sb.Length; i++)
            {
                sb[i] = '_';
            }
            // 输出修改后的内容
            Console.WriteLine(sb.ToString());
        }
    }
}

你的实现的优化点

你后续的实现思路没问题,但有两处可以优化的地方:

  1. str.IndexOf(guess) 只会返回第一个匹配字符的索引,如果原字符串有重复字符(比如"hello"里的两个'l'),会遗漏其他匹配项。
  2. 可以提前初始化StringBuilder并复用,减少不必要的内存分配。

高效优化版本

using System;
using System.Text;

namespace randomtesting
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string originalWord = "hello";
            // 直接生成下划线字符串并转为StringBuilder,后续复用
            StringBuilder displayWord = new StringBuilder(new string('_', originalWord.Length));
            
            Console.WriteLine(displayWord.ToString());
            
            // 简化字符读取,避免空输入异常(可额外加输入长度校验)
            char guess = char.ToLower(Console.ReadLine()[0]);
            
            // 遍历所有匹配的字符索引,替换所有对应下划线
            int index = originalWord.IndexOf(guess);
            while (index != -1)
            {
                displayWord[index] = guess;
                index = originalWord.IndexOf(guess, index + 1);
            }
            
            Console.WriteLine(displayWord.ToString());
        }
    }
}

优化说明

  • 用char.ToLower(Console.ReadLine()[0])替代Convert.ToChar(Console.ReadLine().ToLower()),减少冗余类型转换,同时避免用户输入空字符串时的异常。
  • 通过循环调用带起始位置参数的IndexOf,找到所有匹配的字符索引,一次性替换所有对应下划线,解决重复字符的替换问题。
  • 复用同一个StringBuilder实例,减少内存分配开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:12:18