根据 UWP 应用程序中的当前区域设置将整数转换为字符串

Roy Li - MSFT 32,231 信誉分 Microsoft 供应商
2024-04-23T06:24:01.2+00:00

你好

我在 UWP 应用程序中有以下示例代码:


int number = 1234;

string str = number.ToString("N0");

var cultureInfo = CultureInfo.CurrentCulture;

我还在 Windows 的区域设置中选择了德语“de-DE”(默认区域格式)。但是,在此示例中,str 为“1,234”,cultureInfo 为“en-US”。它应该是“1.234”和“de-DE”。

我该如何解决这个问题?

此问题由Converting an integer to a string according to the current regional settings in an UWP application - Microsoft Q&A总结而来.

通用 Windows 平台 (UWP)
通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
20 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Junjie Zhu - MSFT 15,366 信誉分 Microsoft 供应商
    2024-04-23T07:17:09.9733333+00:00

    你好,

    这里有一个获得 CultureInfo的解决方案.

    1. 使用GlobalizationPreferences.Languages 去获取当前的语言设置并转换成 CultureInfo.
    2. 使用Windows.Globalization.NumberFormatting.DecimalFormatter 把数字转换成正确的格式.
    var cultureInfo= new System.Globalization.CultureInfo(Windows.System.UserProfile.GlobalizationPreferences.Languages[0]);
    
    var valueToBeFormatted = 1234567891.23;
    string currentLanguage= cultureInfo.Name;
    string currentRegion = Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion;
    
    // In this case it's the Euro with the default number formatting for Germany.
    var DecimalFormatEuroDE = new Windows.Globalization.NumberFormatting.DecimalFormatter(new[] { currentLanguage }, currentRegion);
    DecimalFormatEuroDE.IsGrouped = true;
    var DecimalValueEuroDE = DecimalFormatEuroDE.Format(valueToBeFormatted);
    
    // Results for display.
    var results = "Fixed number (" + valueToBeFormatted + ")\n" +
                    "Formatted Euro (de-DE defaults): " + DecimalValueEuroDE;
    Debug.WriteLine(results);
    
    
    

    谢谢.


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助