c# - 如何将英文数字转换为阿拉伯数字,例如 196 转换为 ١٩٦?
问题描述
有谁知道我们如何将英文数字转换为.Net CORE C# 中196
的阿拉伯数字形式١٩٦
。
foreach (DataRow dr in ds.Tables[0].Rows)
{
lstSurahs.Add(new Quran
{
ID = Convert.ToInt32(dr["ID"].ToString()),
DatabaseID = Convert.ToInt32(dr["DatabaseID"].ToString()),
SuraID = Convert.ToInt32(dr["SuraID"].ToString()),
// Need Arabic Form
VerseID = Convert.ToInt32(dr["VerseID"].ToString().ConvertNumerals()),
AyahText = dr["AyahText"].ToString()
});
}
解决方案
没有这样的方法,但我们可以实现它;让我们尽可能地概括任务:
给定一个
string source
and ,如果提供它们,则将其中 的CultureInfo culture
所有数字source
转换为国家数字culture
代码:
using System.Globalization;
using System.Linq;
...
public static partial class StringExtensions {
public static String ConvertNumerals(this string source,
CultureInfo culture = null) {
if (null == source)
return null;
if (null == culture)
culture = CultureInfo.CurrentCulture;
string[] digits = culture.NumberFormat.NativeDigits.Length >= 10
? culture.NumberFormat.NativeDigits
: CultureInfo.InvariantCulture.NumberFormat.NativeDigits;
return string.Concat(source
.Select(c => char.IsDigit(c)
? digits[(int) (char.GetNumericValue(c) + 0.5)]
: c.ToString()));
}
}
演示:
// "ar-SA" is "arabic Saudi Arabia"
Console.WriteLine("test 123".ConvertNumerals(CultureInfo.GetCultureInfo("ar-SA")));
// "en-US" is "english United States"
Console.WriteLine("test 123".ConvertNumerals(CultureInfo.GetCultureInfo("en-US")));
结果:
test ١٢٣
test 123
推荐阅读
- heroku - 'tesseract:加载共享库时出错:libarchive.so.13:python
- html - 使用 CSS 按下时更改检查按钮标签
- javascript - Algolia - 获取所有唯一标签及其总数
- python - 检测输入中的关键字
- c++ - SetConsoleDisplayMode() 函数无法将我的窗口设置为全屏
- python - 我必须制作一个添加分数的函数
- javascript - HTML 行跨度与 css 元素冲突
- postgresql - 选择最小值时不使用索引的PostgreSQL多列组
- docker - Docker pull:拉取后仍有旧图像
- android - RecyclerView 重复(插入)