Console.WriteLine((-42).ToString() == "-42"); Console.WriteLine(double.NaN.ToString() == "NaN"); Console.WriteLine(int.Parse("-42") == -42); Console.WriteLine(1.1.ToString().Contains("?") == false); Console.WriteLine(new DateTime(2014, 1, 1).ToString().Contains("2014")); Console.WriteLine("i".ToUpper() == "I" || "I".ToLower() == "i");
çã®å€ãããã€ååŸããŸãããïŒ 0ãã倧ããå Žåãæ£è§£ã¯ãäŸåãã§ãããããå°åã®èšå®ã«ã€ããŠè©³ããç¥ãå¿ èŠã¯ãããŸããã æ®å¿µãªãããå€ãã®ããã°ã©ããŒã¯ãç°ãªãç°å¢ã§ã®ãããã®èšå®ãç°ãªãå¯èœæ§ããããšã¯ãŸã£ããèããŠããŸããã ãŸãããã®ããã°ã©ããŒããã¹ãŠã®ã³ãŒãã«InvariantCultureãèšå®ããã®ã¯é¢åã§ããã®çµæãçŸããã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«å¥åŠã«åäœããä»ã®åœã®ãŠãŒã¶ãŒã«å±ããŸãã ã ãã®èšäºã§ã¯ãå°åã®èšå®ã«ãã£ãŠåœ±é¿ãåããããã€ãã®éèŠãªãã€ã³ãã®ç°¡åãªéžæãæäŸããŸãã

ã¡ãã£ãšããçè«ïŒ.NETã§ã¯ãç¹å®ã®èšèªãšå°åã®èšå®ã«é¢ãããã¹ãŠã®æ å ±ã¯CultureInfoã¯ã©ã¹ã䜿çšããŠèŠã€ããããšãã§ããŸãã 以åã«ã«ã«ãã£ã«ééããããšããªãå Žåã ãã®æçš¿ã¯æåã®æ £ãã«é©ããŠããŸãã æ¢åã®ããŸããŸãªå°åèšå®ã®èª¿æ»ã«ç±å¿ãªçµéšè±å¯ãªããã°ã©ããŒã¯ããã¹ãŠã®CultureInfoãæåã§è¡šç€ºããã®ã«ãããããããããããŸããã å人çã«ã¯ãããæç¹ã§ç²ããŸããã ãããã£ãŠãCultureInfoExplorerãšåŒã°ããå°ããªWPFã¢ããªã±ãŒã·ã§ã³ïŒ GitHub ã ãã€ã㪠ãžã®ãªã³ã¯ ïŒã衚瀺ãããäžã®ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããŠããŸãã 次ã®ããšãã§ããŸãã
- ãã®CultureInfoã«ãããšããã®äž»èŠãªããããã£ã®æå³ãšãäºåã«æºåãããæååãã¿ãŒã³ãã©ã®ããã«èŠããããèŠãŠãã ããã
- ãã®ããããã£ã«ã€ããŠã¯ãå¯èœãªå€ãšãåå€ã«å¯Ÿå¿ãããã¹ãŠã®CultureInfoã®ãªã¹ããåç §ããŠãã ããã
- ãã®ãã¿ãŒã³ã«ã€ããŠã¯ãå€æå¯èœãªãªãã·ã§ã³ã®å¯èœãªãªãã·ã§ã³ãåç §ããŠãã ãããåãªãã·ã§ã³ã«ã€ããŠã¯ãé¢é£ããCultureInfoã®ãªã¹ããåç §ããŠãã ããã
æ°å
æ°å€ã®è¡šçŸã«ã€ããŠã¯ã NumberFormatInfo ïŒ CultureInfo.NumberFormatããã¢ã¯ã»ã¹å¯èœïŒãæ åœããŸã ã ãããŠãããã¯éåžžã®æ°åã ãã§ãªããããŒã»ã³ããŒãžãšééç䟡å€ã«ãèšåããŠããŸãã æ£ãšè² ã®å€ãããããšã«æ³šæããŠãã ãããããŒã«ãªãŒãŒã·ã§ã³/ã°ããŒããªãŒãŒã·ã§ã³ãæ±ãå Žåãããã«æ³šæãæãããšãéèŠã§ãã å°ãªããšãããã¥ã¡ã³ãã«ç®ãéããå©çšå¯èœãªããããã£ã確èªããããšã匷ããå§ãããŸãã
人ã«åé¡ãåŒãèµ·ããæãäžè¬çãªããããã£ã®1ã€ã¯ã NumberDecimalSeparatorãšåŒã°ããŸã ã ããã¯ãæ°å€ããã³ãŒããããšãã«æŽæ°éšãäœããåé¢ãããããæ åœããŸãã ãšã©ãŒã®å žåçãªäŸïŒããã°ã©ãã¯å°æ°ã®é åãæååã«ããŒãžããããããã³ã³ãã§åºåããŸãã ãã®åŸã圌ã¯æååã解æããŠé åã«æ»ããŸãã NumberDecimalSeparatorããã€ã³ãã«çããå Žåããã¹ãŠãæ£åžžã§ãã ããšãã°ãen-USã«ã«ãã£ãŒãå ¬éãããããããã¹ãŠãããã°ã©ããŒã®ããã«æ©èœãã圌ã¯è£œåããªãªãŒã¹ããŸããã ãã®è£œåã¯ru-RUã«ã«ãã£ãŒãæã€ãŠãŒã¶ãŒã«ãã£ãŠããŠã³ããŒããããæ²ãã¿å§ããŸãïŒçµå±ã圌ã®NumberDecimalSeparatorã¯ã³ã³ãã«çããïŒèŠçŽ 1.2ããã³3.4ââã®é åã¯ããã®ãããªããŒãžã§ã¹ããªã³ã°ã1,2,3,4ãã«ããŒãžããã解æããã®ã«åé¡ããããŸãã å人çã«ã¯ãåæ§ã®åé¡ã«ééããããã°ã©ããŒãããã©ãŒãããæã«æ£ããNumberFormatInfoã瀺ãããšã§éåžžã¯è§£æ±ºããããšãããããããã³ã³ãã«ããŸãã¯ã³ã³ãããããã«çœ®ãæããããšãæãã€ãå§ãããšãããã«æ²ãããªããŸãã ååãšããŠã NumberDecimalSeparatorãä»»æã§ããããšãç解ããå¿ èŠããããŸãã ããšãã°ãfa-IRïŒãã«ã·ã£ïŒæåã§ã¯ãã¹ã©ãã·ã¥ïŒ '/'ïŒãšåãã§ãã
å©æ¯ãšé貚ã«ã€ããŠãåæ§ã®ããããã£ããããŸãïŒ PercentDecimalSeparatorãšCurrencyDecimalSeparator ã ãããã®3ã€ã®å€ãã¹ãŠãäžèŽããå¿ èŠã¯ãããŸããã ããšãã°ãã«ã¶ãã¹ã¿ã³ïŒkk-KZïŒã®å Žåã NumberDecimalSeparatorãšPercentDecimalSeparatorã¯ã«ã³ãã«çãããCurrencyDecimalSeparatorã¯ãã€ãã¹èšå·ã«çãããªããŸãïŒè² ã®æ°å€ã瀺ããããã®ãšãŸã£ããåãã§ãïŒã
æŽæ°ãæååã«å€æããããšãæ°åã®ã¿ã§æ§æãããå€ãåŸããããšèãã人ãããŸãã ãã ãããããã®æ°å€ã¯ã°ã«ãŒãã«åããããšãã§ããŸãã NumberGroupSizesããããã£ã¯ã°ã«ãŒãã®ãµã€ãºãæ åœãã NumberGroupSeparatorã¯ã»ãã¬ãŒã¿ãæ åœããŸãïŒããŒã»ã³ããšé貚ã¯åæ§ã®ããããã£ãæã£ãŠããŸãããåã³äžèŽããå¿ èŠã¯ãããŸããïŒã ã°ã«ãŒãã®ãµã€ãºã¯ããŸããŸã§ããããšãã°ãå€ãã®ã«ã«ã㣠ïŒas-INãbn-BDãgu-INãhi-INãªã©ïŒ ã§ã¯ ã NumberGroupSizesã¯{ 3ã2 }ã§ãã as-INã«ã«ãã£ã®çªå·1234567ã¯ã ã12.34.567ãã®ããã«ãªããŸãã \ u0020ã¹ããŒã¹ã¯ã»ãã¬ãŒã¿ãšããŠäœ¿çšã§ããŸãïŒããšãã°ãaf-ZAããã³lt-LTã§ïŒãããããèŠããšãã¯ãæååã®è§£æãšãã©ãŒãããã«å¥ã®æŸèæãé§ãç«ãŠãªãã§ãã ããã ã»ãšãã©ã®å Žåãéåžžã®ã¹ããŒã¹ã®ä»£ããã«ãäžå¯è§£ãªã¹ããŒã¹ã䜿çšãããŸã\ u00A0ïŒãã€ãã£ãru-RUïŒã
è² ã®æ°ãšæ£ã®æ°ã瀺ãèšå·ãã«ã«ãã£ã«å«ãŸããŸãïŒ NegativeSign ã PositiveSign ã ãããããããšã«ãå©çšå¯èœãªãã¹ãŠã®æåã«ãããŠããã€ãã¹ãšãã©ã¹ã«çããã®ã§ãããããã«äŸåããã¹ãã§ã¯ãããŸãããç°å¢ãåå®çŸ©ããããããã£ãããããã£ã«èšå®ã§ããŸãã ãããŠãæãèå³æ·±ãã®ã¯ãèšå·ã§ã¯ãªããæ£ãšè² ã®å€ã®ãã©ãŒããããã¿ãŒã³ã§ãã ããšãã°ãè² ã®æ°å€ã®æžåŒèšå®ã¯ã次ã®5ã€ã®å€ãæã€NumberNegativePatternã䜿çšããŠæ±ºå®ãããŸãã
0 (n) 1 -n 2 - n 3 n- 4 n -
ããšãã°ãti-ETæåïŒTigrinyaïŒãšããªãã¢ïŒïŒã§ã¯ã-5ã®å€ããã©ãŒã ïŒ5ïŒã«è¡šç€ºãããŸãã ããŒã»ã³ããŒãžãšéè²šïŒ PercentNegativePattern ã PercentPositivePattern ã CurrencyNegativePattern ã CurrencyPositivePattern ïŒã䜿çšãããšãç¶æ³ã¯ããã«æ¥œãããªããŸãã ããšãã°ã CurrencyNegativePatternã«ã¯ãæ倧16åã®å€ããããŸãã
0 ($n) 1 -$n 2 $-n 3 $n- 4 (n$) 5 -n$ 6 n-$ 7 n$- 8 -n $ 9 -$ n 10 n $- 11 $ n- 12 $ -n 13 n- $ 14 ($ n) 15 (n $)
ç¹æ®æåãšç¹å¥ãªæ°å€ã®ç¹å¥ãªããããã£ããããŸãïŒ PercentSymbol ã PerMilleSymbol ã NaNSymbol ã NegativeInfinitySymbol ã PositiveInfinitySymbol ã doubleãååŸãããæååã«ãã©ãŒããããããïŒãã¡ãããçŸåšã®ãŠãŒã¶ãŒã«ã«ãã£ãŒã§ã¯ïŒå®éã®ãããžã§ã¯ããèŠãŠãæåå圢åŒã§"-Infinity"ãšæ¯èŒããŸããã ãã®çŸåšã®æåã«å¿ããŠã NegativeInfinitySymbolã¯ããŸããŸãªæå³ãæã¡ãŸãã
'- ', '-- á¢áááá', '(-) à®®à¯à®à®¿à®µà®¿à®²à®¿', '-â', '-Anfeidredd', '-Anfin', '-begalybÄ', '-beskonaÄnost', 'ÃigrÃoch dhiúltach', '-ifedh', '-INF', '-Infini', '-infinit', '-Infinit', '-Infinito', '-Infinitu', '-infinity', 'Infinity-', '-Infinity', 'miinuslõpmatus', 'mÃnusz végtelen', '-nekoneÄno', '-neskonÄnost', '-nieskoÅczonoÅÄ', '-njekónÄne', '-njeskóÅcnje', '-onendlech', '-Sonsuz', '-tÃŒkeniksizlik', '-unendlich', '-Unendlich', '-ÎÏειÏο', '-', ' ', '-á£á¡áá¡á á£áááá', '××× ×¡××£ ש××××', '-Ùا ÙÙاÙØ©', 'Ù
ÙÙØ§Û ØšÛ ÙÙاÛت', 'Ù
ÛÙÙŸÙÙ ÚÛÙسÙزÙÙÙ', '-à¶
නනà·à¶à¶º', 'á °á Šá ¬á ¡á ·á ¬á Š á ¬á ¢á µá á á á ·á á Šá ¢ á ¶á ¡á ¬á ¡', 'àœàœŒàŒàœàŸ²àœàœŠàŒàœàœàŒàœàœºàœàŒàœàœŽàœàŒàœàŒ', 'ßß߲߬ßßßß«ß²-', 'êêêêê', 'è² ç¡çª®å€§', 'èŽæ 穷倧'
åæããããŸããŸãªæçšãªç¹æ§ã®äŸã ãããŠãã¡ãã£ãšããããªãã¯ããã£ãŠã¿ãŸãããããã·ã¢ã®æåãå°ãå€ããŠãæ°ããæå³ãç§ãã¡ã®äººçãå°ç¡ãã«ããããã«ãæçš¿ã®æåããäŸã瀺ããŸãã
var myCulture = (CultureInfo)new CultureInfo("ru-RU").Clone(); myCulture.NumberFormat.NegativeSign = "!"; myCulture.NumberFormat.PositiveSign = "-"; myCulture.NumberFormat.PositiveInfinitySymbol = "+Inf"; myCulture.NumberFormat.NaNSymbol = "Not a number"; myCulture.NumberFormat.NumberDecimalSeparator = "?"; Thread.CurrentThread.CurrentCulture = myCulture; Console.WriteLine(-42); // !42 Console.WriteLine(double.NaN); // Not a number Console.WriteLine(int.Parse("-42")); // 42 Console.WriteLine(1.1); // 1?1
ããããããã®èª°ããç§ã«èšãïŒããªããã®ãããªäŸãèæ ®ãããã¹ããªã®ãïŒã ããã°ã©ããŒããã®ãããªããšãæžãããšã¯ãããŸããïŒã ãããŠãç§ã¯çããŸãïŒããŸãããŸãã誰ãããªãã§ããããã©ãããŠïŒã ããã©ã€ãã©ãªãé åžãããšç¶æ³ã¯æ²ãããªãããã®ãŠãŒã¶ãŒã®1人ãæåã楜ããããšã«ããŸããã ãã¶ãã圌ã¯ãã 楜ããã§ããã®ã奜ããªã ããããããŸããããããã¯ãããçš®ã®é¢šå€ãããªæåïŒæ»ãã ããŸãã¯æ¶ç©ºã®èšèªïŒã®ã¢ããªã±ãŒã·ã§ã³ãæžããŠãããããããŸããã ããããããã¯åé¡ã§ã¯ãããŸããã ãããŠãéèŠãªããšã¯ãããªãã®ã©ã€ãã©ãªãããã«å¯Ÿããçããç°å¢ã§å¥åŠã«æ¯ãèãå§ãããšããããšã§ãã ãããã£ãŠã NegativeSignãšPositiveSignã決ããŠå€ãããªããšããäºå®ã«äŸåããªãã§ãã ããã å¿ èŠãªæåãæ瀺ãã幞ãã«æ®ããããšããå§ãããŸãã
ãŸããJohn Skeetã«ããæè¿ã®æçš¿The BobbyTables cultureãèªãããšãã¿ããªã«å§ããŸãã ç°¡åãªèŠçŽïŒJohn Skeetã¯ãSQLã¯ãšãªã®ãã©ã¡ãŒã¿ãŒãæ°åãæ¥ä»ã§ãã£ãŠãããããããšã¹ã±ãŒãããªã人ãèªããŸãã ãããŠããžã§ã³ã¯ããã€ãã®ãªã¯ãšã¹ããåãåããŸã
"SELECT * FROM Foo WHERE BarDate > '" + DateTime.Today + "'" "SELECT * FROM Foo WHERE BarValue = " + (-10)
ãããŠå¥è·¡ã®æåãå®çŸ©ããŸãïŒ
CultureInfo bobby = (CultureInfo) CultureInfo.InvariantCulture.Clone(); bobby.DateTimeFormat.ShortDatePattern = @"yyyy-MM-dd'' OR ' '=''"; bobby.DateTimeFormat.LongTimePattern = ""; bobby.NumberFormat.NegativeSign = "1 OR 1=1 OR 1=";
æãæ¯ããšãã¯ãšãªã¯æ¬¡ã®ããã«ãªããŸãã
SELECT * FROM Foo WHERE BarDate > '2014-08-08' OR ' '=' ' SELECT * FROM Foo WHERE BarValue = 1 OR 1=1 OR 1=10
ããŠããã以äžã®èª¬æã¯å¿ èŠãªããšæããŸãã
æ¥æ
æ¥ä»ãšæå»ã§ã¯ããã¹ãŠãç¹ã«å°é£ã§ãã æ¥ä»ã«ã¯ã DateTimeFormatInfoã¯ã©ã¹ïŒ CultureInfo.DateTimeFormatããããã£ïŒãããã CalendarããããŸã ã ããã«ãã¡ã€ã³ã«ã«ãã£ãŒã«ã¬ã³ããŒïŒ CultureInfo ïŒãããã䜿çšå¯èœãªã«ã¬ã³ããŒã®ãªã¹ãïŒ CultureInfo.OptionalCalendar ïŒããããŸãã æšæºã«ã¬ã³ããŒã®å€§ããªãã³ãã«ããããŸãïŒ ChineseLunisolarCalendar ã EastAsianLunisolarCalendar ã GregorianCalendar ã HebrewCalendar ã HijriCalendar ã JapaneseCalendar ã JapaneseLunisolarCalendar ã JulianCalendar ã KoreanCalendar ã KoreanLunisolarCalendar ã PersianCalendar ã TaiwanCalendarãã 圌ãã®è«çã¯éåžžã«ç°ãªã£ãŠããŸãã ãã®ãããã¯ã«ã€ããŠã¯ã€ã³ã¿ãŒãããäžã®è©³çŽ°æ å ±ã§ååã§ãããäžé£ã®ç¬ç«ããæçš¿ã«ååãªè³æããããããããã§ã¯è©³ãã説æããŸããã æ¥ä»ãšæå»ã®ãã©ãŒãããã«ãŒã«ã¯ãæ°åãããããã«æ¥œãããã®ã§ããããŸããŸãªæ¥ä»ãã©ãŒããããªãã·ã§ã³ã®ãã¿ãŒã³ã®æãæãšææ¥ã®ãã€ãã£ãåãAM / PMã®è¡šèšãã»ãã¬ãŒã¿ãªã©ã 2014幎12æ31æ¥ã¯ã次ã®åœ¢åŒã§éä¿¡ã§ããŸãïŒ dateTime.ToStringïŒ "d"ïŒ ïŒã
09/03/36 10/3/1436 12/31/2014 1436/3/10 2014.12.21. 2014/12/21 2014-12-21 31. 12. 2014 31.12.14 31.12.14 Ü. 31.12.2014 31.12.2014 . 31.12.2014. 31/12/14 31/12/2014 31/12/2557 31-12-14 31-12-2014 31- 14 31--14
ãããŠããããã¯ããã©ã«ãå€ã«ãããŸããïŒãªãã·ã§ã³ã®ã«ã¬ã³ããŒãæ¥ç¶ããããšã¯ãããŸããïŒã ããããããã§ãããŸããŸãªæéã¹ã±ãŒã«ãèŠãããšãã§ããŸãã誰ããåºã«1436人ã2557人ãããŸãïŒããã¯èšäºã®åé ããã®äŸã®æåŸãã2çªç®ã®è¡ãžã®åç §ã§ãïŒã æ¥ä»ã䜿çšããŠæäœããŠããå Žåã¯ãåžžã«åã圢åŒã§è¡šç€ºãããããŠãŒã¶ãŒã«åãããŠæ¥ä»ãããèŠæ £ãã圢åŒã§è¡šç€ºããããæ€èšããå¿ èŠããããŸãã ããŠãæ¥ä»ã®è§£æã«ã€ããŠã¯é»ã£ãŠããŸãã
äžé¢é³¥è©Šéš

ããªãã®ã³ãŒãã¯ãã«ã³ã®ãã¹ãã«åæ ŒããŸããïŒ ã 詳现ã«ã€ããŠã¯èªããŸãããããªãªãžãã«ãèªåã§èªãæ¹ãè¯ãã§ãããã ãã«ã³ãã¹ãã®èŠç¹ã¯æ¬¡ã®ãšããã§ããçŸåšã®æåãtr-TRïŒãã«ã³èªïŒãã«ã³ïŒïŒã«å€æŽããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã ãã¹ãŠæ£åžžã«åäœããŸããïŒ ãã®æåã§ã¯ãæ¥ä»ãæ°åãæååã§ååãªæ¥œãã¿ããããŸãã æåã®äŸã«æ»ããšãæ€èšäžã®ã«ã«ãã£ã§ã¯ã ãiã.ToUpperïŒïŒã¯ ãIããšçãããªãã ãIã.ToLowerïŒïŒã¯ ãiããšçãããããŸããïŒå€§æåãšå°æåã«ã€ããŠè©³ããç¥ãããå Žåã¯ãç§ã¯ãã®æçš¿ãšãã®UTF-8ã«é¢ããSO-answerã匷ããå§ãããŸã ãããã¯åé¡ãããŸããïŒã æçš¿ã®æåŸã«ãã¢ã©ãã¢æ°åãـي٠٣ٚãã§æ§æãããæååãæ£èŠè¡šçŸ\ d {5}ãš äžèŽããçŽ æŽãããäŸã瀺ããŸãã
çµè«ã®ä»£ããã«
å°åèšå®ã®ç§åŠã¯è€éã§ãã ãã®æçš¿ã§ã¯ãç§ã¯åœŒããäœã«åœ±é¿ãäžããããšãã§ãããã«ã€ããŠã®å®å šãªæ å ±ãæäŸãããµãã決ããŠããŸããã å åšåã«é¢é£ããèå³æ·±ãããšããããããããŸãïŒå³ããå·Šãžè¡ãããã¹ãã«ã€ããŠã®ã¿èããŸãã1ã€ã§ã¯ãªããå¥ã®æçš¿ãæžãããšãã§ããŸãïŒã CultureInfo.CurrentCultureãã¢ããªã±ãŒã·ã§ã³ã«ã©ã®ããã«åœ±é¿ãããã«ã€ããŠãããã€ãã®èå³æ·±ãäŸã瀺ãããã£ãã ãã§ãã äžè¬çãªååŠã®æ¡å€§ãšãã芳ç¹ããããã®è³æã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã äžè¬çãªæèšã¯æ¬¡ã®ãšããã§ããäžçã«ããŸããŸãªæåããããšèããããªãå Žåã¯ã CultureInfo.InvariantCulture ïŒãŸãã¯èªåã«é©ããå¥ã®æåïŒãã©ãã§ã䜿çšããŸããã»ãšãã©ã®å Žåãå¹³åã«ç ãããšãã§ããŸãã ãããŠãããªããããã«ã€ããŠèãããªãã°ããããããã®é åããã培åºçã«ç 究ããããšã¯çŽ æŽãããã§ãããã ãã®åªããæ¬ã¯ããã«åœ¹ç«ã¡ãŸãïŒ ãããåœéåïŒã°ããŒãã«Windowsããã³Webã¢ããªã±ãŒã·ã§ã³æ§ç¯ã®ããã®éçºè ã¬ã€ã ã
CultureInfoãããŸããŸãªæ©èœã®åäœã«ã©ã®ããã«åœ±é¿ãããã«ã€ããŠã®è¿œå ã®äºå®ã¯æè¿ããŸãã å€ãã®äººãèªåã®é åçãªç©èªãèŠã€ãããšæããŸãã