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

C#求助:将发音类数字单词转换为对应数字的功能实现

解决C#中发音相似数字单词转数字的问题

数据结构选择

用**Dictionary<string, int>**是最优方案,它能直接建立「发音相似单词」到「对应数字」的映射关系,查找效率高、逻辑清晰,比数组/列表更适合这种键值配对的场景。根据给定单词数组,对应的映射关系如下:

  • zero → 0
  • one、won → 1
  • two、too、to → 2
  • three →3
  • four、for、fore →4
  • five→5
  • six→6
  • seven→7
  • eight、ate→8
  • nine、nein→9

核心实现逻辑

  1. 预处理输入句子:去除标点符号、统一转为小写,避免大小写和标点干扰匹配(比如原句中的"for,"会被误判,处理后变成"for"才能正确匹配)。
  2. 分割句子为单词数组:按空格拆分句子,得到独立的单词列表。
  3. 遍历匹配并生成结果:逐个检查每个单词是否在字典中,若存在则将对应数字追加到结果字符串中。
  4. 输出最终结果:拼接所有匹配到的数字,得到目标输出。

原代码问题分析

你的代码存在两个核心问题:

  • 循环遍历的是句子的每个字符而非每个单词,每次循环都检查整个句子是否包含某个词,导致只要句子里有该词,就会重复输出(循环多少次就输出多少次)。
  • 没有按单词出现的顺序处理,而是每次循环都批量输出所有匹配到的词,导致顺序混乱且重复。

修正后的完整代码

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 建立发音相似单词到数字的映射字典
        Dictionary<string, int> numWordMap = new Dictionary<string, int>
        {
            {"zero", 0},
            {"one", 1},
            {"won", 1},
            {"two", 2},
            {"too", 2},
            {"to", 2},
            {"three", 3},
            {"four", 4},
            {"for", 4},
            {"fore", 4},
            {"five", 5},
            {"six", 6},
            {"seven", 7},
            {"eight", 8},
            {"ate", 8},
            {"nine", 9},
            {"nein", 9}
        };

        string inputSentence = "This is just for a quick test to see if one of these four numbers will show up.";
        string result = "";

        // 预处理:去除标点,转小写,分割为单词数组
        var words = inputSentence
            .Replace(",", "")
            .Replace("!", "")
            .Replace(".", "")
            .ToLower()
            .Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

        // 遍历每个单词,匹配字典并生成结果
        foreach (var word in words)
        {
            if (numWordMap.TryGetValue(word, out int number))
            {
                result += number.ToString();
            }
        }

        Console.WriteLine(result); // 输出:4214
        Console.ReadKey();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:40:24