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

CHAR类型包含判断无法用Contains方法、非规范电话号码格式化问题咨询

问题1:Char类型数组包含匹配实现(无可用Contains方法场景)

可根据数组大小选择两种实现方案:

  • 方案1:哈希集快速匹配(适合大数组场景,时间复杂度更低)
    思路:先将Array1的所有char元素存入哈希集合,再遍历Array2的元素逐个判断是否在集合中,只要存在至少一个匹配即满足条件。
    代码示例(C#):
    bool HasCommonChar(char[] array1, char[] array2)
    {
        HashSet<char> charSet = new HashSet<char>(array1);
        foreach (char c in array2)
        {
            if (charSet.Contains(c))
            {
                return true;
            }
        }
        return false;
    }
    
  • 方案2:双层遍历暴力匹配(适合小数组场景,无需额外引入数据结构)
    思路:直接逐个比对两个数组的元素,匹配到相同字符即可返回结果。
    代码示例:
    bool HasCommonChar(char[] array1, char[] array2)
    {
        foreach (char a in array1)
        {
            foreach (char b in array2)
            {
                if (a == b) return true;
            }
        }
        return false;
    }
    
问题2:非规范电话号码格式化实现

核心思路:仅保留电话号码中的+前缀和所有数字字符,过滤空格、括号、横杠等所有无关字符即可得到规范格式。

  • 正则替换实现(代码更简洁):
    string FormatPhoneNumber(string input)
    {
        // 匹配所有不是+和数字的字符,统一替换为空
        return System.Text.RegularExpressions.Regex.Replace(input, @"[^+0-9]", "");
    }
    
    输入+ 420 741-854()642调用该方法,直接输出+420741854642,完全符合预期。
  • 字符遍历筛选实现(无正则依赖场景):
    string FormatPhoneNumber(string input)
    {
        StringBuilder sb = new StringBuilder();
        foreach (char c in input)
        {
            if (c == '+' || char.IsDigit(c))
            {
                sb.Append(c);
            }
        }
        return sb.ToString();
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:08