我有一个包含非ascii格式的数字的字符串,例如unicode BENGALI DIGIT ONE(U + 09E7): "?"
如何在.NET中将其解析为整数?
注意:我尝试使用int.Parse()"bn-BD"作为IFormatProvider指定bengali文化格式.不行.
您可以创建一个与旧字符串相同的新字符串,除了将原始数字替换为拉丁十进制数字.这可以通过循环遍历字符并检查值来可靠地完成char.IsDigit(char).如果此函数返回true,则将其转换为char.GetNumericValue(char).ToString().
像这样:
static class DigitHelper
{
public static string ConvertNativeDigits(this string text)
{
if (text == null)
return null;
if (text.Length == 0)
return string.Empty;
StringBuilder sb = new StringBuilder();
foreach (char character in text)
{
if (char.IsDigit(character))
sb.Append(char.GetNumericValue(character));
else
sb.Append(character);
}
return sb.ToString();
}
}
int value = int.Parse(bengaliNumber.ConvertNativeDigits());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |