我想确保我的应用程序中的某些数字打印时没有任何分隔符,分组等,无论当前环境如何.似乎以下两种方法产生相同的结果(可能更多):
123456789.ToString("0");
123456789.ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
你知道任何边缘情况或怪癖吗?哪一个更"正确"?你会用哪一个?
我曾经使用过第二个,但最近我发现了第一个,并开始使用它,因为它不需要额外的using System.Globalization.
是否可以从CultureInfo类或System.Globalization命名空间中的任何其他类获取距离单位.
例如"en-GB"将是"mile","en-FR"将是"km"
出于好奇......
在我们的应用程序中,我按以下格式列出了所有可用的翻译"NativeName - EnglishName".对于某些语言,NativeName不是大写的,例如.
"Deutsch - German"
"español - Spanish"
"français - French"
"italiano - Italian"
"Nederlands - Dutch"
"polski - Polish"
Run Code Online (Sandbox Code Playgroud)
把第一个字母大写是没什么大不了的,但这背后的原因是什么?
我正在Windows上用C#开发一个多语言程序
如何在某些操作上更改Windows编写语言...
例如,在焦点事件上从英语更改为阿拉伯语.
谢谢
用英语等价物替换德语字符(变音符号,重音符号)
我需要从各个文本字段中删除任何德语特定字符,以便处理到另一个不接受它们有效的系统.
所以我所知道的人物是:
ßäöüÄÖÜ
目前我有一种手动方式来替换它们:
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)
所以必须存在某种转换表?)
为什么:
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?
我发现我的机器和构建服务器上的测试结果不同.我设法找到了不同的单行.这是一个字符串比较.在第一个字符的情况下,两个字符串不同.
下面的测试在我的本地机器上传递,在构建机器上失败.
[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) 我有以下代码来获取月份名称列表:
var monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这会继续返回一个额外的空字符串值以及Month名称:
我正在使用Xamarin Studio.之前有人遇到过这个吗?
我需要执行对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) 我在这里的"返回"行有一个断点:
[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:"不支持文化. "
试图支持哪种文化,为什么不支持这种文化,以及我应该做些什么来支持这种文化?
回答sphanley:
除了代表"BarbeQue的新骑士"之外,它还是一个"骨架"(现在)实体看起来像这样:
public class NRBQEntity
{
public NRBQEntity()
{
}
public String Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
对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) cultureinfo ×10
.net ×8
c# ×7
multilingual ×2
culture ×1
datetime ×1
diacritics ×1
ios ×1
parsing ×1
sqlite ×1
windows ×1
xamarin ×1