gpt4 book ai didi

c# - 字符串索引和替换

转载 作者:可可西里 更新时间:2023-11-01 03:09:26 26 4
gpt4 key购买 nike

我今天刚遇到这个问题,想知道是否有人知道为什么这个测试可能会失败(取决于文化)。目的是检查测试文本是否包含两个相邻的空格,这是根据 string.IndexOf (即使我告诉字符串替换所有出现的两个相邻的空格) .经过一些测试后,似乎 \xAD 以某种方式导致了这个问题。

public class ReplaceIndexOfSymmetryTest
{
[Test]
public void IndexOfShouldNotFindReplacedString()
{
string testText = "\x61\x20\xAD\x20\x62";
const string TWO_SPACES = " ";
const string ONE_SPACE = " ";
string result = testText.Replace(TWO_SPACES, ONE_SPACE);
Assert.IsTrue(result.IndexOf(TWO_SPACES) < 0);
}
}

最佳答案

是的,我以前遇到过同样的事情(尽管角色不同)。基本上 IndexOf 会在查找匹配项时考虑“特殊”Unicode 字符的各个方面,而 Replace 只是将字符串视为代码点序列。

来自IndexOf docs :

This method performs a word (case-sensitive and culture-sensitive) search using the current culture. The search begins at the first character position of this instance and continues until the last character position.

... 并且来自 Replace :

This method performs an ordinal (case-sensitive and culture-insensitive) search to find oldValue.

您可以使用 IndexOf 的重载,它需要一个 StringComparison ,并强制它执行序号比较。

关于c# - 字符串索引和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923187/

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