Ahm*_*mad 2 .net c# .net-core arabic-support
有谁知道我们如何将英语数字转换196为阿拉伯语形式,如???.Net CORE C#。
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()
});
}
Run Code Online (Sandbox Code Playgroud)
没有这样的方法,但是我们可以实现它;让我们尽可能将任务放在一般的位置:
给定
string source和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()));
}
}
Run Code Online (Sandbox Code Playgroud)
演示:
// "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")));
Run Code Online (Sandbox Code Playgroud)
结果:
test ???
test 123
Run Code Online (Sandbox Code Playgroud)