已回答 将AE福彩12选5走势图价格解析为双倍值时出现问题

帕沙

知名会员
已加入
2020年4月29日
留言内容
64
编程经验
1-3
我有一个将字符串文本解析为双精度值的函数,它适用于除阿联酋以外的几乎所有文化



Function:
公共静态double解析(字符串文本,字符串文化)
        {
              
                return double.Parse(text.Replace(" ", ""), NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
                   new CultureInfo(culture));
        }


有问题的阿联酋的价值:"د.إ. 259.00"

文化代码:"ar-AE"

异常获取:System.FormatException:'输入字符串的格式不正确。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
Monetary values should be put into decimal instead of double. This will cut down dramatically on rounding errors when your deal with values.
 

帕沙

知名会员
已加入
2020年4月29日
留言内容
64
编程经验
1-3
好的,但是我只是感到困惑,其他所有文化在解析中都可以正常工作,但仅对于自动曝光而言,它是行不通的

1596117598434.png
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
不要发布代码的屏幕截图。粘贴您的代码。我们无法从屏幕快照中复制代码,我当然也不会从屏幕快照中编写代码,因此,我们的生活会变得更加轻松,并停止屏幕快照代码。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
上面是否已发布都无所谓。请不要发布您的代码的屏幕截图。它占用了屏幕上不必要的空间。而且根本不是很有用。如果要发布代码,则将其作为代码发布,并放入论坛编辑器提供的代码标签中。
 

帕沙

知名会员
已加入
2020年4月29日
留言内容
64
编程经验
1-3
Cross post: 面对阿联酋福彩12选5走势图代码价格问题在C#中翻倍
"问题在于福彩12选5走势图中的福彩12选5走势图符号包含一个 从左至右标记 作为其最后一个角色。"...而您的字符串缺少此字符。
我尝试以下情况,但仍然出现异常


C#:
公共静态double解析(字符串文本,字符串文化)
        {
            if (culture.Contains("AE"))
            {
                var righttoleft = ((Char)0x200F);
                text = text + (righttoleft);
                
            }
            if (text.ToLower().Equals("free"))
                return 0;
            else   
                return double.Parse(text.Replace(" ", ""), NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
                   new CultureInfo(culture));
        }
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
公共静态double解析(字符串文本,字符串文化)
将要为此函数传递的参数粘贴到此处?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
我和跳伞运动员就该主题对RTL LTR进行了精彩的讨论,但看起来该主题缺少某些页面 用希伯来语连接数字的问题

我同意。放下该符号,然后在需要时将其串联。希伯来语和阿拉伯语将引起所链接主题中概述的各种问题。传递不带符号的值,并在解析视图时将其连接或连接起来,以在稍后更新视图时将其重新添加。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
虽然这不能解决您的问题,但它更多地是价值观的分裂,并且可以挽救您的理智。因为在C#中使用阿拉伯语或希伯来语是很困难的,因为有元音之类的元音可以通过某些字符等的任何过滤器进行滑动。根据您的喜好和品味进行编辑。元组值允许快速的瞬态数据流,因此它们不会影响性能。我建议将代码分解为较小的功能。例如检查福彩12选5走势图是希伯来语还是阿拉伯语,并通过将字符串中的福彩12选5走势图符号与其他函数分隔开来删除福彩12选5走势图符号,因为最终,您所需要做的就是解析双精度对吗?

还请谨慎使用该Parse,因为如果不解析,它将抛出异常,因此请考虑添加try catch块,并在出现错误时在catch部分中处理响应。一些简单的示例代码:
C#:
        private void Button1_Click(object sender, RoutedEventArgs e)
        {
            if (IsCultureARAE("ar-AE"))
            {
                Tuple<double, string, string> parse_Result = ParseArabic(new string[] { "259.00", "د.إ", "" }, "ar-AE");
                Debug.WriteLine($"Item one is your double value : {parse_Result.Item1} - Item two is your Currency : {parse_Result.Item2} - Item three is your price with symbol aligned RLM : {parse_Result.Item3}");
            }
        }
        public bool IsCultureARAE(string culture)
        {
            return culture.Contains("AE");
        }
        const string LRM = "\u200E";
        const string RLM = "\u200F";
        public Tuple<double, string, string> ParseArabic(string[] text, string culture)
        {
            text[2] = string.Join(" ", RLM + text[0], text[1]);
            return text[0].Equals("free", StringComparison.CurrentCultureIgnoreCase)
                ? Tuple.Create(0.0, text[1], text[2])
                : Tuple.Create(double.Parse(text[0], NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
                   new CultureInfo(culture)), text[1], text[2]);
        }
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
hoo!我知道了!
C#:
var culture = new CultureInfo("ar-AE");
var value = 259.00m;

var s = value.ToString("C", culture);
MessageBox.Show(s);

var flags = NumberStyles.AllowCurrencySymbol |
            NumberStyles.AllowDecimalPoint |
            NumberStyles.AllowThousands |
            NumberStyles.AllowLeadingWhite |
            NumberStyles.AllowTrailingWhite;
var v = decimal.Parse(s, flags, culture);
MessageBox.Show(v.ToString("C", culture));

魔术在第10-11行。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
发表您的榜样约翰
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
如果有修复程序,请发布示例或一些伪源

不,OP的问题是输入中的福彩12选5走势图符号不正确。

不正确怎么办?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
Mea ..

一天使用希伯来语/阿拉伯语的时间不足,无法确定哪些符号是LTR / RTL。最简单的解决方案是剪掉该符号,然后再添加它。

杀死脑细胞不值得
 
最佳 底部