gpt4 book ai didi

C# toUpper 用于没有大写的语言

转载 作者:行者123 更新时间:2023-12-05 01:43:45 24 4
gpt4 key购买 nike

使用 String.toUpper() 时尝试“格式化”不包含大写字符(例如阿拉伯语)的语言时,是否必须采取任何其他预防措施?

string arabic = "مرحبا بالعالم";
string upper= arabic.ToUpper();

最佳答案

边栏:当本地化很重要时,切勿调用 .ToUpper().ToLower(),因为这些方法不接受显式的 IFormatProvider明确您的意图(关于本地化)。您应该更喜欢 CultureInfo.TextInfo.ToUpperCase

但要回答您的问题:大小写转换不会影响不受大小写限制的字符,它们会保持原样。这也发生在 en-US 和其他拉丁字母语言中,因为数字 0、1、2 等字符也没有大小写 - 所以您的阿拉伯字符将是原样保存。

注意非字母字符和已经大写的字符是如何被忽略的:

"abcDEF1234!@#" -> "ABCDEF1234!@#"

另一件需要注意的事情是,有些语言的字符在小写和大写形式之间没有一对一的映射,即土耳其语 I,它写在这里:https://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/ (这就是为什么当您使用 ToLower 而不是 ToUpper 时 FxCop 会对您大喊大叫,以及为什么您应该使用 StringComparison.OrdinalIgnoreCase CurrentCultureIgnoreCase 而不是 str1.ToLower() == str2.ToLower() 用于不区分大小写的字符串比较。

关于C# toUpper 用于没有大写的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com