我得到一个String.FormatException试图转换/解析文化不是非美国时的字符串.奇怪的是,字符串是通过应用与用于将其解析回字符串的格式和文化完全相同的格式和文化生成的.在下面的代码中,所有这些版本都将失败:
const string culture = "ja-JP";
const string format = "dd MMM yyyy"; //error in orignal post included {0:}
CultureInfo info = new CultureInfo(culture);
Thread.CurrentThread.CurrentCulture = info;
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(culture);
//string toParse = String.Format(info, format, DateTime.Now); //error in original post
string toParse = DateTime.Now.ToString(format);
System.Diagnostics.Debug.WriteLine(string.Format("Culture format = {0}, Date = {1}", culture, toParse));
try
{
DateTime output = DateTime.ParseExact(toParse, format, CultureInfo.InvariantCulture);
//DateTime output = DateTime.ParseExact(toParse, format, info);
//DateTime output = DateTime.ParseExact(toParse, format, info, DateTimeStyles.None);
//DateTime output = Convert.ToDateTime(toParse, … 当比较"Île"和"Ile"时,C#并不认为它们是相同的.
string.Equals("Île", "Ile", StringComparison.InvariantCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
对于我遇到的所有其他重音字符,比较工作正常.
我应该使用另一种比较功能吗?
是否有可能在WinRT中即时更改UI文化?我发现ApplicationLanguages.PrimaryLanguageOverride = "en";,但这仅在显示应用程序UI之前有效,而不是之后(例如我想通过设置更改UI语言).
我的问题是String.IndexOf返回-1.我希望它会回归0.
参数:
text= C:\\Users\\User\\Desktop\\Sync\\?(注意组合海鸥下面的字符)
stringToTrim = C:\\Users\\User\\Desktop\\Sync\\
当我检查索引时,使用is int index = text.IndexOf(stringToTrim);的值.我发现使用序数字符串比较解决了我的这个问题:index-1
int index = text.IndexOf(stringToTrim, StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
在线阅读,很多Unicode字符(如U + 00B5和U + 03BC)映射到相同的符号,因此最好扩展它并规范化两个字符串:
int index = text.Normalize(NormalizationForm.FormKD).IndexOf(stringToTrim.Normalize(NormalizationForm.FormKD), StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
这是检查一个字符串包含另一个字符串的所有连续字符的索引的正确方法吗?所以我们的想法是,当你想要检查符号是否匹配时,你会规范化,但是当你想通过它们的编码值检查字符时你不规范化(因此允许重复的符号)?此外,有人可以解释为什么int index = text.IndexOf(stringToTrim);在字符串的开头找不到匹配?换句话说,它实际上是在做什么呢?我本来期望它开始从字符串的开头到字符串的结尾搜索字符.
我试图在字符串中找到子字符串的索引,该字符串与特定文化下的另一个字符串匹配(从System.CultureInfo提供).
例如,字符串"ass"匹配德国文化下"straße"中的子字符串"aß".
我可以使用找到匹配开始的索引
culture.CompareInfo.IndexOf(value, substring);
Run Code Online (Sandbox Code Playgroud)
但是,如果没有诉诸蛮力,是否有一种简单的方法来识别2个字符是否匹配,而不是3个?
我想知道生产力是否与程序员是否是母语为英语的人有关.我在日本工作,我可以告诉你,日本程序员很难获得一种语言的英语部分(保留关键字,函数名称,教程等),这对他们来说并不自然,他们的思维过程因语言映射开销而变慢.您是否可以分享您与非母语英语演讲者打交道的经验,是否容易克服这一障碍,或者母语为英语的人会永远有一点优势?
从一个层次了这个问题,这将是(通过环)来存储所有可用的资源和相关的文化,允许特定文化的用户选择的方式是什么?
进一步说明:
假设有三个资源文件:
我可以在每个称为一个字符串LanguageName.我如何能够以编程方式循环遍历不同的LanguageName值以列出它们(例如列表框)?
编辑:WinForms项目,嵌入式资源.
我想将日期时间转换为瑞典文化.
DateTime.Today.ToString("dd MMMM yyyy");
Run Code Online (Sandbox Code Playgroud)
上面的代码行为给出了2013年12月27日的结果
我想要用瑞典语显示十二月的结果.
我使用ADO断开模式通过填充数据集ds从数据库获取数据.除日期字段外,所有数据都成立
string strDate = ds.Tables[0].Rows[0]["H_DT"].ToString();
Run Code Online (Sandbox Code Playgroud)
抛出异常说:
此日历不支持指定的时间.它应该在04/30/1900 00:00:00(格里高利日)和11/16/2077 23:59:59(格里高利日期)之间.
我试着写这段代码
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-sa");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-sa");
Run Code Online (Sandbox Code Playgroud)
把文化改成阿拉伯语,但没有任何运气.
以下是变量快速监视的屏幕截图

尝试在欧洲文化中将数字格式化为两位小数格式.这样逗号就是小数分隔符和空格千位分隔符.
在示例中,213245应格式化为213 245,00
我怎样才能做到这一点?
213245.toFixed(2).toLocaleString();
Run Code Online (Sandbox Code Playgroud)
给出213245.00但它应该是213 245,00
然而
213245.toLocaleString()
Run Code Online (Sandbox Code Playgroud)
给出213 245
小提琴下面:
var out, input;
input = 213245;
// TEST 1
out = input.toFixed(2);
console.log(out); // 213245.00
out = out.toLocaleString();
console.log(out); // 213245.00
// TEST 2
out = input.toLocaleString();
console.log(out); // 213 245
Run Code Online (Sandbox Code Playgroud)