Библиотечные функции языка С strchr() и strstr() ищут первое вхождение указанного символа или строки в строку и возвращают указатель. Эквивалент этих функций в С# — всевозможные версии метода IndexOf — возвращает индекс в исходной строке, а не указатель.
int IndexOf(char ch);
int IndexOf(char ch, int iStartIndex);
Int IndexOf(char ch, int iStartlndex, int iCount);
int IndexOf(string str);
int IndexOf(string str, int iStartlndex);
int IndexOf(string str, int iStartlndex, int iCount);
Можно искать символ или другую строку. Поиск чувствителен к регистру. Метод возвращает -1, если символ или строка не найдены. Дополнительно можно указать начальный индекс и количество символов.
Допустим, строка определена так:
string str = "hello world";
тогда: str. IndexOf (‘o') вернет 4, и:
str.IndexOf("wo") вернет 6.
Можно искать с конца строки:
int Lastlndex0f(char ch);
int Lastlndex0f(char ch, int iStartlndex);
int Lastlndex0f(char ch, int iStartlndex. int iCount);
int Lastlndex0f(string str);
int Lastlndex0f(string str, int iStartlndex);
int Lastlndex0f(string str, int iStartlndex, int iCount);
Хотя эти методы осуществляют поиск с конца строки, возвращаемый индекс исчисляется с начала строки. Например, для строки приведенный выше вызов;
str.LastlndexOf('о') вернет 7, а:
str.LastlndexOf("wo") вернет 6.
Первым аргументом следующих методов является массив символов. Эти методы позволяют выяснить индекс первого или последнего элемента в строке, совпадающего с любым символом из указанного массива:
int IndexOfAny(char[] ach);
int IndexQfAny(char[] ach, int iStartlndex);
int IndexOfAny(char[] ach, int iStartlndex, int iCount);
int LastIndexOfAny(char[] ach);
int LastIndexOfAny(char[] ach, int iStartlndex);
int LastIndexOfAny(char[] ach, int iStartlndex, int iCount);
Например, если массив строк и строка определены так:
char[] achVowel = { ' а ' , 'е', 'i', 'о', 'и' };
string str = "hello world";
str.IndexOfAny(achVowel) возвращает 1, a:
str.LastlndexOfAny(achVowel) возвращает 7.
Иногда при обработке текстовых файлов (скажем, файлов исходных кодов программ) полезно удалить пробельные символы — невидимые символы, разделяющие другие элементы строки. В классе Stringесть методы, позволяющие это сделать. Можно либо использовать предопределенные пробельные символы, либо определить собственный набор символов:
string Trim();
string Trim(params char[] ach);
string TrimStart(params char[] ach);
string TrimEnd(params char[] ach);
Чтобы удалить предопределенные пробельные символы из начала и конца строки str, можно использовать:
str.Trim() или: str.Trim(null)
Только из начала строки:
str.TrimStart(null)
Только из конца строки:
str.TrimEnd(null)
С другой стороны, можно указывать символы, которые желательно удалять из начала и конца строки (не обязательно пробельные). Можно либо определить массив символов и передать его методу Trim (или TrimStart или TrimEnd):
char[] achTrim = { ' ', '-', '_' };
str.Trim(achTrlm);
либо перечислить символы в явном виде при вызове метода:
str.Trim(‘ ', '-', '_'};
Кроме того, можно добавлять пробелы (или любые другие символы) в начало и конец строки для обеспечения соответствующей длины строки: