处理十进制分隔符和不同的文化设置

问题描述 投票:0回答:0

在我的 .NET MAUI 应用程序中,我的条目应该允许 positive double 值。另外,我允许切换语言。目前,我只支持英语和德语。

无论如何,在英语文化设置中,“.”是小数点分隔符,在德语中则是“,”。

在我的Pixel 5 - API 33(Android 13.0 - API 33)模拟器中,当我在德语语言设置中点击“,”以及在英语语言设置中点击它时,我只会得到“。”。

不幸的是,当时的解释不同,实际上“84.2”的输入随后被存储为 842“。

有没有一种简单的方法来处理这个问题,以便独立于当前文化正确存储和加载值?

另外,有没有一种简单的方法可以只允许正值,并且在打字时也可以有“0”和“0.”,但不能有“.456”?

或者也许你们中的一些人知道一种比在 TextChanged 期间解析某个正则表达式(我目前所做的)更简单的方法来允许正双值文化独立?然后还想将值存储在 SQLite 中。

=========== 条目代码已更改 ======

private void EntryControl_TextChanged(object sender, TextChangedEventArgs e)
{
    var entry sender as Entry;
    var input entry.Text;
    var match = Regex.Match(input, „^(0|0[.,][0-9]*|[1-9]+[.,]*[0-9]*)$“);

    if (input.Length == 0)
    {
        return;
    }

    if (!match.Success)
    {
        entry.Text = e.OldTextValue;
    }

    entry.CursorPosition = e.NewTextValue.Length;
}
maui cultureinfo currentculture
© www.soinside.com 2019 - 2024. All rights reserved.