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

如何筛选含阿拉伯数字的字符串并转换为英文数字?

解决方案

要实现仅对包含阿拉伯文数字(如٠٥٥这类字符)的字符串进行转换,你需要先完成两步:精准识别包含阿拉伯文数字的字符串,再对符合条件的字符串调用转换函数。

1. 编写阿拉伯文数字检测函数

阿拉伯文数字主要覆盖两个Unicode字符范围:

  • 阿拉伯文-Indic数字:U+0660(٠)到U+0669(٩)
  • 阿拉伯文-Eastern数字:U+06F0(۰)到U+06F9(۹)

基于这个范围,我们可以写一个检测函数:

private bool HasArabicIndicDigits(string input)
{
    foreach (char c in input)
    {
        if ((c >= '\u0660' && c <= '\u0669') || (c >= '\u06F0' && c <= '\u06F9'))
        {
            return true;
        }
    }
    return false;
}

2. 遍历列表处理字符串

遍历你的字符串列表,仅对检测到阿拉伯文数字的字符串调用转换函数:

// 假设你的原始字符串列表是List<string> originalStrings
List<string> processedStrings = new List<string>();
foreach (string str in originalStrings)
{
    if (HasArabicIndicDigits(str))
    {
        processedStrings.Add(toEnglishNumber(str));
    }
    else
    {
        processedStrings.Add(str);
    }
}

3. 优化原转换函数(可选但推荐)

原函数用+=拼接字符串的效率较低,建议改用StringBuilder提升性能,同时优化数字转换逻辑:

private string toEnglishNumber(string input)
{
    StringBuilder result = new StringBuilder();
    foreach (char c in input)
    {
        if (char.IsDigit(c))
        {
            // 将数字字符直接转成对应的英文数字字符(如٥→'5')
            int numValue = (int)char.GetNumericValue(c);
            result.Append((char)('0' + numValue));
        }
        else
        {
            result.Append(c);
        }
    }
    return result.ToString();
}

这样处理后,像"٠٥٥ ٥٣٠ ٨٦٨٤"这类包含阿拉伯文数字的字符串会被转换,而纯英文数字(如"123")或不含阿拉伯文数字的字符串会直接保留原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:25:22