C#string.IndexOf方法不起作用

Ali*_*aji 0 c# string indexof

我正在使用C#从字符串中删除一个特殊字符:

while (str.Contains("@"))
    str = str.Remove(str.IndexOf("@"), 1);
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

StartIndex不能小于零.

str变量确实包含@字符,但的IndexOf的结果值()方法是-1.

我想这是因为字符串编码是utf-8,但我不知道如何操作字符串.

价值strNfyCAlcvxu1Xqw@??‘„??.

Ofi*_*ten 9

来自MSDN string.Contains

此方法执行序数(区分大小写和文化不敏感)比较.搜索从此字符串的第一个字符位置开始,并继续到最后一个字符位置.

所以你必须在以下方面使用序数比较IndexOf:

while (str.Contains("@"))
    str = str.Remove(str.IndexOf("@",StringComparison.Ordinal), 1);
Run Code Online (Sandbox Code Playgroud)

  • @AmirZojaji您应该反过来问:导致问题的原因是什么?混合了从左到右和从右到左的字符 (2认同)