gpt4 book ai didi

java - C# 中的 string.ToLowerInvariant() 与 Java 中的 String.ToLowerCase(Culture.ROOT) 对于土耳其语 İ

转载 作者:行者123 更新时间:2023-11-30 08:00:23 25 4
gpt4 key购买 nike

我发现 C# (.NET v4.0) 和 Java 在将“İ”转换为具有“不变”区域性的小写字母方面存在行为差异。

在 Java 中,"İ".toLowerCase(Locale.ROOT) 返回 'i'

在 C# 中,"İ".ToLowerInvariant()"İ".ToLower(CultureInfo.InvariantCulture) 都返回 "İ"但是 "İ".ToLower(new CultureInfo("en-EN")) 返回 'i'

看起来 Java 正确地进行了转换,但 C# 没有。这是 C# 中的错误吗?

最佳答案

一起来看看吧。问题的字母

İ

事实上

U + 0130: Latin Capital Letter I With Dot Above

(字符映射引用)。这似乎是合理的,恕我直言,在 Invariant Culture 的情况下(我们无权使用英语或土耳其语的任何文化)ToUpperInvariant() 方法应该返回字母本身(因为它已经是 capital)并且对于 ToLowerInvariant,结果应该类似于

U + xxxx: Latin Small Letter I With Dot Above

但是,我们没有这样的一封信:

https://en.wikipedia.org/wiki/Dotted_and_dotless_I

由于我们没有所需的字母,我们所能做的就是保留原始字母完整

当我们使用 "en-EN"(英语)文化时,我们有权将 Letter I With Dot Above 对应到只是很好的旧英语 I 并因此为 ToLower() 返回 i

关于java - C# 中的 string.ToLowerInvariant() 与 Java 中的 String.ToLowerCase(Culture.ROOT) 对于土耳其语 İ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523156/

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