C# 为什么';与StringCompare一起工作的索引?

C# 为什么';与StringCompare一起工作的索引?,c#,string-comparison,indexof,currentculture,ignore-case,C#,String Comparison,Indexof,Currentculture,Ignore Case,我得到这个错误 string v = "aeiou"; foreach(int i in lokacija.Naziv) { if(v.indexOf(lokacija.Naziv[i], StringComparison.CurrentCultureIgnoreCase) = -1) s+=lokacija.Naziv[i]; } 错误为“无法从System.StringComparison转换为int”。但我知道indexOf(strin

我得到这个错误

    string v = "aeiou";
    foreach(int i in lokacija.Naziv) {
      if(v.indexOf(lokacija.Naziv[i], StringComparison.CurrentCultureIgnoreCase) = -1)
        s+=lokacija.Naziv[i];
    }

错误为“无法从System.StringComparison转换为int”。但我知道indexOf(string)方法有一个重载,它接受StringComparison类型的参数。那么我该如何解决这个问题呢?

您的循环看起来很奇怪。。。你是说这个吗

foreach(string ssub in lokacija.Naziv) {
  if(v.indexOf(ssub, StringComparison.CurrentCultureIgnoreCase) = -1)
    s+=ssub;

@Johnathan Lonowski一针见血-你得到的是String.IndexOf的版本,而不是一个,因为你在寻找字符串中的一个字符,而不是另一个字符串中出现的字符。

首先,你应该使用
=
进行比较

其次,所有
IndexOf
重载,其第一个参数是
char
,其第二个参数是
int
。这就是为什么你会犯这样的错误。要使用接收
StringComparison
的重载,请将第一个参数设置为
string
,如下所示:

if (v.indexOf(lokacija.Naziv[i].ToString(), StringComparison.CurrentCultureIgnoreCase) == -1)

顺便说一句,你想从字符串中删除元音吗?我建议你试试。

什么版本的.net?我猜
lokacija.Naziv[I]
可能提供了
Char
。仅当第一个参数是
字符串时才接受
StringComparison
s@djomles,您有机会尝试我的建议吗?@JonathanLonowski这取决于使用的.NET Framework。在.NETCore3.1中有这样一个函数:第二点不完全正确。在.NET Core中,我们有重载
char,StringComparision
Well.NET Core初始版本:2016年6月27日,我不知道未来。在.NET Core中有一个带有
(char,ComparisonType)
的函数