标签: cultureinfo

ToString("0")与ToString(CultureInfo.InvariantCulture)

我想确保我的应用程序中的某些数字打印时没有任何分隔符,分组等,无论当前环境如何.似乎以下两种方法产生相同的结果(可能更多):

123456789.ToString("0");
123456789.ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

你知道任何边缘情况或怪癖吗?哪一个更"正确"?你会用哪一个?

我曾经使用过第二个,但最近我发现了第一个,并开始使用它,因为它不需要额外的using System.Globalization.

.net globalization cultureinfo

14
推荐指数
3
解决办法
2万
查看次数

.Net中当前CultureInfo的距离单位

是否可以从CultureInfo类或System.Globalization命名空间中的任何其他类获取距离单位.

例如"en-GB"将是"mile","en-FR"将是"km"

.net c# globalization cultureinfo

14
推荐指数
1
解决办法
3238
查看次数

为什么CultureInfo.NativeName不会大写?

出于好奇......

在我们的应用程序中,我按以下格式列出了所有可用的翻译"NativeName - EnglishName".对于某些语言,NativeName不是大写的,例如.

"Deutsch - German"
"español - Spanish"
"français - French"
"italiano - Italian"
"Nederlands - Dutch"
"polski - Polish"
Run Code Online (Sandbox Code Playgroud)

把第一个字母大写是没什么大不了的,但这背后的原因是什么?

.net multilingual cultureinfo

13
推荐指数
1
解决办法
1715
查看次数

用C#更改语言

我正在Windows上用C#开发一个多语言程序

如何在某些操作上更改Windows编写语言...
例如,在焦点事件上从英语更改为阿拉伯语.

谢谢

.net c# windows multilingual cultureinfo

13
推荐指数
1
解决办法
3万
查看次数

用英语等价物替换德语字符(变音符号,重音符号)

用英语等价物替换德语字符(变音符号,重音符号)

我需要从各个文本字段中删除任何德语特定字符,以便处理到另一个不接受它们有效的系统.

所以我所知道的人物是:

ßäöüÄÖÜ

目前我有一种手动方式来替换它们:

myGermanString.Replace("ä","a").Replace("ö","o").Replace("ü","u").....
Run Code Online (Sandbox Code Playgroud)

但我希望有一种更简单/更有效的方法.因为我每次运行都会在数千个字符串上进行,其中99%不会包含这些字符.

也许是一种涉及某种CultureInfo的方法?

(例如,根据MS,以下返回的字符串是相等的

String.Compare("Straße", "Strasse", StringComparison.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

所以必须存在某种转换表?)

.net c# cultureinfo

13
推荐指数
3
解决办法
3万
查看次数

为什么逗号在使用InvariantCulture的int.Parse()和decimal.Parse()中表现不同?

为什么:

decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

返回12345的小数,但是:

int.Parse("1,2,3,45", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

抛出异常?我希望对于相同的文化,逗号的处理方式是相同的.如果decimal.Parse返回12345,为什么不int.Parse返回12345?

.net c# globalization parsing cultureinfo

13
推荐指数
1
解决办法
3309
查看次数

Culture-Invariant区分大小写的字符串比较会在不同的计算机上返回不同的结果

我发现我的机器和构建服务器上的测试结果不同.我设法找到了不同的单行.这是一个字符串比较.在第一个字符的情况下,两个字符串不同.

下面的测试在我的本地机器上传递,在构建机器上失败.

[TestClass]
public class Tests 
{
    [TestMethod]
    public void Strings()
    {
        Assert.IsFalse(0 == string.Compare("Term’s", "term’s", false, CultureInfo.InvariantCulture));
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将其更改为string.Equals:

string.Equals("Term’s", "term’s", StringComparison.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

string.Equals 在构建服务器上返回true并在本地计算机上返回false.

顺序比较在两台机器上给出相同的结果:

string.Compare("Term’s", "term’s", StringComparison.Ordinal))
Run Code Online (Sandbox Code Playgroud)

据我了解,InvariantCulture应该在各地返回相同的结果.区分大小写的文化不变字符串比较如何依赖于机器?我应该检查哪些设置来识别问题?

更新:平台和字符串

字符串很重要.对于具有"异国情调"标点符号的字符串,例如右单引号右双引号,可以观察到这些结果

似乎该行为在Windows 8计算机上重现.如果您键入以下内容,甚至可以在https://dotnetfiddle.net/上看到它:

using System;
using System.Globalization;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(0 == string.Compare("Terms", "terms", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term’s", "term’s", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term“s", "term“s", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term”s", "term”s", false, CultureInfo.InvariantCulture)); …
Run Code Online (Sandbox Code Playgroud)

.net c# cultureinfo string-comparison

13
推荐指数
1
解决办法
1055
查看次数

.Net CultureInfo Month Names返回一个额外的空字符串

我有以下代码来获取月份名称列表:

var monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这会继续返回一个额外的空字符串值以及Month名称:

在此输入图像描述

我正在使用Xamarin Studio.之前有人遇到过这个吗?

.net c# datetime cultureinfo xamarin

13
推荐指数
1
解决办法
879
查看次数

如何处理iOS SQLite中的重音字符?

我需要执行对case和accents不敏感的SELECT查询.出于演示目的,我创建了一个这样的表:

create table table
(
  column text collate nocase
);

insert into table values ('A');
insert into table values ('a');
insert into table values ('Á');
insert into table values ('á');

create index table_cloumn_Index
  on table (column collate nocase);
Run Code Online (Sandbox Code Playgroud)

然后,我在执行以下查询时得到这些结果:

SELECT * FROM table WHERE column LIKE 'a';
> A
> a

SELECT * FROM table WHERE column LIKE 'á';
> á

SELECT * FROM table WHERE column LIKE 'Á';
> Á
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题,以便以下任何查询的结果如下:

> A
> a
> Á
> á …
Run Code Online (Sandbox Code Playgroud)

sqlite cultureinfo diacritics ios

12
推荐指数
1
解决办法
6259
查看次数

为什么我会得到"文化不受支持"以及什么,如果有什么,我该怎么办呢?

我在这里的"返回"行有一个断点:

[HttpGet]
[Route("api/Test/{id1}/{id2}")]
public NRBQEntity GetTestMessage(String id1, String id2)
{
    return NRBQClient.GetTestMessage(id1, id2);
}
Run Code Online (Sandbox Code Playgroud)

虽然它没有崩溃应用程序,当我达到这一点,我得到,

" Exception:Thrown:"不支持文化."(System.Globalization.CultureNotFoundException)抛出了System.Globalization.CultureNotFoundException:"不支持文化. "

试图支持哪种文化,为什么不支持这种文化,以及我应该做些什么来支持这种文化?

UPDATE

回答sphanley:

除了代表"BarbeQue的新骑士"之外,它还是一个"骨架"(现在)实体看起来像这样:

public class NRBQEntity
{
    public NRBQEntity()
    {

    }

    public String Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

更新2

对AnotherUser的回答:

这不是我的代码,所以我只是在试图理解它; 它作为一个起点提供给我复制/重构一个现有的独立项目,并将其纳入"解决方案".已经说过,回答你的问题,这里是解决方案中"GetTestMessage()"的所有实例:

[HttpGet]
[Route("api/Test/{id1}/{id2}")]
public NRBQEntity GetTestMessage(String id1, String id2)
{
    return NRBQClient.GetTestMessage(id1, id2); 
}

[HttpGet]
[Route("api/Test/{id1}/{id2}")]
public NRBQEntity GetTestMessage(String id1, String id2)
{
    return NRBQService.GetNRBQEntity(id1, id2);
}

public interface INRBQClient
{
    NRBQEntity GetTestMessage(String id1, String id2);
}

public NRBQEntity …
Run Code Online (Sandbox Code Playgroud)

c# globalization culture cultureinfo asp.net-web-api

12
推荐指数
1
解决办法
2万
查看次数