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

如何通过get:set访问器根据产品ID返回对应产品分类名称

如何根据产品ID关联对应分类名称?

需求回顾

  • 产品ID固定为4位有效格式:首字符小写字母,第二位是连字符,末尾两位数字(如e-11、b-22)
  • 已知分类映射:
    • e- → Electronics
    • b- → Books
    • a- → Apparel
    • t- → Toys
    • o- → Others
  • 若产品ID前缀不在上述已知分类中,需将产品ID改为o-+原数字部分(如q-23改为o-23),同时分类名称设为Others
  • 产品分类名称为只读属性,仅在设置产品ID时自动赋值

现有代码问题

你当前代码里的productCategoryName = (value[0]);只是取了产品ID的首字符,完全没有和categoryCodes、categoryNames两个数组做关联,所以无法正确映射分类名称。另外题目明确说输入的产品ID始终是有效格式,原代码里的else分支可作为兜底保留。

解决方案

核心思路是:提取产品ID的前缀(前两位,比如e-),在categoryCodes数组里查找这个前缀的索引,找到就用对应categoryNames的名称;没找到就用Others,同时修正产品ID。

修改后的完整代码如下:

public static string[] categoryCodes = { "e-", "b-", "a-", "t-", "o-" };
public static string[] categoryNames = { "Electronics", "Books", "Apparel", "Toys", "Others" };
private string productCategoryName;
private string productID
{
    get { return productID; }
    set
    {
        // 按题目要求,输入的value始终是有效格式,此判断可保留做兜底
        if (value.Length == 4 && char.IsLower(value[0]) && value[1] == '-' && char.IsDigit(value[2]) && char.IsDigit(value[3]))
        {
            // 提取产品ID的前缀(前两位,比如"e-")
            string prefix = value.Substring(0, 2);
            // 查找前缀在categoryCodes中的索引
            int index = Array.IndexOf(categoryCodes, prefix);
            
            if (index != -1)
            {
                // 找到对应分类,直接赋值
                productID = value;
                productCategoryName = categoryNames[index];
            }
            else
            {
                // 前缀不在已知分类中,修改产品ID并设置分类为Others
                string numberPart = value.Substring(2);
                productID = $"o-{numberPart}";
                productCategoryName = categoryNames[4]; // 也可直接写"Others"
            }
        }
        else
        {
            // 处理无效格式的兜底逻辑
            productID = "o-00";
            productCategoryName = "Others";
        }
    }
}

关键代码解释

  • string prefix = value.Substring(0, 2);:提取产品ID的前两位作为分类前缀,比如从e-11中拿到e-
  • int index = Array.IndexOf(categoryCodes, prefix);:用Array.IndexOf查找前缀在分类码数组中的位置,找到返回对应索引,没找到返回-1
  • 找到索引时,直接用categoryNames[index]获取对应分类名称;没找到时,提取原ID的数字部分,拼接成o-xx格式的新ID,分类名称设为Others

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:13