gpt4 book ai didi

c# - String StartsWith() 丹麦语文本问题

转载 作者:行者123 更新时间:2023-11-30 13:33:39 26 4
gpt4 key购买 nike

谁能解释这种行为?

var culture = new CultureInfo("da-DK");
Thread.CurrentThread.CurrentCulture = culture;
"daab".StartsWith("da"); //false

我知道可以通过指定 StringComparison.InvariantCulture 来修复它。但我只是对这种行为感到困惑。

我还知道“aA”和“AA”在丹麦语不区分大小写的比较中被认为是不同的,请参阅 http://msdn.microsoft.com/en-us/library/xk2wykcz.aspx .这解释了这一点

String.Compare("aA", "AA", new CultureInfo("da-DK"), CompareOptions.IgnoreCase) // -1 (not equal)

这是否与第一个代码片段的行为有关?

最佳答案

这里有一个测试可以说明问题,daab og dåb(古语和现代语中的同一个词)意思是洗礼/洗礼。

public class can_handle_remnant_of_danish_language
{
[Fact]
public void daab_start_with_då()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("daab".StartsWith("då")); // Fails
}

[Fact]
public void daab_start_with_da()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("daab".StartsWith("da")); // Fails
}

[Fact]
public void daab_start_with_daa()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("daab".StartsWith("daa")); // Succeeds
}

[Fact]
public void dåb_start_with_daa()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("dåb".StartsWith("daa")); // Fails
}

[Fact]
public void dåb_start_with_da()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("dåb".StartsWith("da")); // Fails
}

[Fact]
public void dåb_start_with_då()
{
var culture = new CultureInfo("da-DK"); Thread.CurrentThread.CurrentCulture = culture;
Assert.True("dåb".StartsWith("då")); // Succeeds
}
}

根据我对这门语言的理解,以上所有测试都应该成功,而且我是丹麦语!不过我没有获得语法学位。 :-)

对我来说似乎是个错误。

关于c# - String StartsWith() 丹麦语文本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535910/

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