Почему IndexOf не работает со StringCompare?

я получаю эту ошибку

    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. Итак, как я могу решить эту проблему?


person djomles    schedule 01.10.2015    source источник
comment
какая версия .net?   -  person Hogan    schedule 01.10.2015
comment
Я предполагаю, что lokacija.Naziv[i], вероятно, обеспечивает Char. .IndexOf() принимает только StringComparisons, когда 1-й аргумент является String.   -  person Jonathan Lonowski    schedule 01.10.2015
comment
@djomles, у тебя была возможность попробовать то, что я предложил?   -  person Andrew    schedule 02.10.2015
comment
@JonathanLonowski это зависит от используемой .NET Framework. В .NET Core 3.1 есть такая функция: docs.microsoft.com/en-us/dotnet/api/   -  person serge    schedule 25.10.2020


Ответы (3)


Прежде всего, вы должны использовать == для сравнения.

Во-вторых, все перегрузки IndexOf, у которых первый параметр — char, их второй параметр — int. Вот почему вы получаете эту ошибку. Чтобы использовать перегрузку, которая получает StringComparison, сделайте этот первый параметр string, например:

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

Кстати, вы пытаетесь удалить гласные из строки? Я рекомендую вам попробовать это.

person Andrew    schedule 01.10.2015
comment
не совсем верно ваше второе замечание. В .NET Core у нас есть перегрузка char, StringComparision docs.microsoft.com/en-us/dotnet/api/ - person serge; 25.10.2020
comment
Итак, первоначальный выпуск .NET Core: 27 июня 2016 г., плохо, что не знаю будущего. - person Andrew; 26.10.2020

ваша петля кажется странной... вы это имели в виду?

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

@Johnathan-Lonowski попал в точку — вы получаете эта версия String.IndexOf, а не это, потому что вы ищете символ в строке, а не вхождение одной строки в другую.

person Chris Shain    schedule 01.10.2015
comment
есть есть функция с (char, ComparisonType) в .NET Core - person serge; 25.10.2020