355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Герберт Шилдт » Полное руководство. С# 4.0 » Текст книги (страница 49)
Полное руководство. С# 4.0
  • Текст добавлен: 7 октября 2016, 10:48

Текст книги "Полное руководство. С# 4.0"


Автор книги: Герберт Шилдт



сообщить о нарушении

Текущая страница: 49 (всего у книги 58 страниц)

Несмотря на большую универсальность метода Compare(), для простого порядко вого сравнения символьных строк проще пользоваться методом CompareOrdinal(). И наконец, следует иметь в виду, что метод CompareTo() выполняет сравнение строк только с учетом культурной среды. На момент написания этой книги отсутствовали перегружаемые варианты этого метода, позволявшие указывать другой способ срав нения символьных строк.

В приведенной ниже программе демонстрируется применение методов Compare(), Equals(), CompareOrdinal(), а также операторов = = и != для сравнения символь ных строк. Обратите внимание на то, что два первых примера сравнения наглядно де монстрируют отличия между сравнением строк с учетом культурной среды и поряд ковым сравнением в англоязычной среде. // Продемонстрировать разные способы сравнения символьных строк. using System; class CompareDemo { static void Main() { string str1 = "alpha"; string str2 = "Alpha"; string str3 = "Beta"; string str4 = "alpha"; string str5 = "alpha, beta"; int result; // Сначала продемонстрировать отличия между сравнением строк // с учетом культурной среды и порядковым сравнением. result = String.Compare(str1, str2, StringComparison.CurrentCulture) Console.Write("Сравнение строк с учетом культурной среды: "); if(result < 0) Console.WriteLine(str1 + " меньше " + str2); else if(result > 0) Console.WriteLine(str1 + " больше " + str2); else Console.WriteLine(str1 + " равно " + str2); result = String.Compare(str1, str2, StringComparison.Ordinal); Console.Write("Порядковое сравнение строк: "); if(result < 0) Console.WriteLine(str1 + " меньше " + str2); else if(result > 0) Console.WriteLine(str1 + " больше " + str2); else Console.WriteLine(str1 + " равно " + str4); // Использовать метод CompareOrdinal(). result = String.CompareOrdinal(str1, str2); Console.Write("Сравнение строк методом CompareOrdinal():n"); if(result < 0) Console.WriteLine(str1 + " меньше " + str2); else if(result > 0) Console.WriteLine(str1 + " больше " + str2); else Console.WriteLine(str1 + " равно " + str4); Console.WriteLine(); // Определить равенство строк о помощью оператора = = . // Это порядковое сравнение символьных строк. if(str1 == str4) Console.WriteLine(str1 + " == " + str4); // Определить неравенство строк с помощью оператора !=. if(str1 != str3) Console.WriteLine(str1 + " != " + str3); if(str1 != str2) Console.WriteLine(str1 + " != " + str2); Console.WriteLine(); // Выполнить порядковое сравнение строк без учета регистра, // используя метод Equals(). if(String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)) Console.WriteLine("Сравнение строк методом Equals() с " + "параметром OrdinalIgnoreCase:n" + str1 + " равно " + str2); Console.WriteLine (); // Сравнить части строк. if(String.Compare(str2, 0, str5, 0, 3, StringComparison.CurrentCulture) > 0) { Console.WriteLine("Сравнение строк с учетом текущей культурной среды:" + "n3 первых символа строки " + str2 + " больше, чем 3 первых символа строки " + str5); } } }

Выполнение этой программы приводит к следующему результату. Сравнение строк с учетом культурной среды: alpha меньше Alpha Порядковое сравнение строк: alpha больше Alpha Сравнение строк методом CompareOrdinal(): alpha больше Alpha alpha == alpha alpha != Beta alpha != Alpha Сравнение строк методом Equals() с параметром OrdinalIgnoreCase: alpha равно Alpha Сравнение строк с учетом текущей культурной среды: 3 первых символа строки Alpha больше, чем 3 первых символа строки alpha, beta Сцепление строк

Строки можно сцеплять, т.е. объединять вместе, двумя способами. Во-первых, с по мощью оператора +, как было показано в главе 7. И во-вторых, с помощью одного из методов сцепления, определенных в классе String. Конечно, для этой цели проще всего воспользоваться оператором +, тем не менее методы сцепления служат неплохой альтернативой такому подходу.

Метод, выполняющий сцепление строк, называется Concat(). Ниже приведена одна из самых распространенных его форм. public static string Concat(string str0, string str1)

Этот метод возвращает строку, состоящую из строки str1, присоединяемой путем сцепления в конце строки str0. Ниже приведена еще одна форма метода Concat(), в которой сцепляются три строки. public static string Concat(string str0, string str1,string str2)

В данной форме метод Concat() возвращает строку, состоящую из последователь но сцепленных строк str0, str1 и str2.

Имеется также форма метода Concat(), в которой сцепляются четыре строки. public static string Concat(string str0, string str1, string str2, string str3)

В этой форме метод Concat() возвращает строку, состоящую из четырех последо вательно сцепленных строк.

А в приведенной ниже еще одной форме метода Concat() сцепляется произволь ное количество строк: public static string Concat(params string[] values)

где values обозначает переменное количество аргументов, сцепляемых для получе ния возвращаемого результата. Если в этой форме метода Concat() допускается сце пление произвольного количества строк, то зачем нужны все остальные его формы? Они существуют ради повышения эффективности. Ведь передача методу от одного до четырех аргументов оказывается намного эффективнее, чем использование для этой цели переменного списка аргументов.

В приведенном ниже примере программы демонстрируется применение метода Concat() в форме с переменным списком аргументов. // Продемонстрировать применение метода Concat(). using System; class ConcatDemo { static void Main() { string result = String.Concat("Это ", "тест ", "метода ", "сцепления ", "строк ", "из класса ", "String." ); Console.WriteLine("Результат: " + result); } }

Эта программа дает следующий результат. Результат: Это тест метода сцепления строк из класса String.

Кроме того, существуют варианты метода Concat(), в которых он принима ет в качестве параметров ссылки на объекты, а не на строки. В этих вариантах метод Concat() получает строковые представления вызывающих объектов, а возвращает объединенную строку, сцепленную из этих представлений. (Строковые представления объектов получаются с помощью метода ToString(), вызываемого для этих объек тов.) Ниже приведены все подобные варианты и формы метода Concat(). public static string Concat(object arg0) public static string Concat(object arg0, object arg1) public static string Concat(object arg0, object arg1, object arg2) public static string Concat(object arg0, object arg1, object arg2, object arg3) public static string Concat(params object[] args)

В первой форме метод Concat() возвращает строку, эквивалентную объекту arg0, а в остальных формах – строку, получаемую в результате сцепления всех аргументов данного метода. Объектные формы метода Concat(), т.е. относящиеся к типу object, очень удобны, поскольку они исключают получение вручную строковых представле ний объектов перед их сцеплением. В приведенном ниже примере программы нагляд но демонстрируется польза от подобных форм метода Concat(). // Продемонстрировать применение объектной формы метода Concat(). using System; class MyClass { public static int Count = 0; public MyClass() { Count++; } } class ConcatDemo { static void Main() { string result = String.Concat("значение равно " + 19); Console.WriteLine("Результат: " + result); result = String.Concat("привет ", 88, " ", 20.0, " ", false, " ", 23.45M); Console.WriteLine("Результат: " + result); MyClass me = new MyClass(); result = String.Concat(me, " текущий счет равен ", MyClass.Count); Console.WriteLine("Результат: " + result); } }

Вот к какому результату приводит выполнение этой программы. Результат: значение равно 19 Результат: привет 88 20 False 23.45 Результат: MyClass текущий счет равен 1

В данном примере метод Concat() сцепляет строковые представления различных типов данных. Для каждого аргумента этого метода вызывается соответствующий ме тод ToString(), с помощью которого получается строковое представление аргумента. Следовательно, в следующем вызове метода Concat(): string result = String.Concat("значение равно " + 19);

метод Int32.ToString() вызывается для получения строкового представления цело го значения 19, а затем метод Concat() сцепляет строки и возвращает результат.

Обратите также внимание на применение объекта определяемого пользователем класса MyClass в следующем вызове метода Concat(). result = String.Concat(me, " текущий счет равен ", MyClass.Count);

В данном случае возвращается строковое представление объекта типа MyClass, сцепленное с указываемой строкой. По умолчанию это просто имя класса. Но если переопределить метод ToString(), то вместо строки с именем класса MyClass может быть возвращена другая строка. В качестве упражнения попробуйте ввести в приведен ный выше пример программы следующий фрагмент кода. public override string ToString() { return "Объект типа MyClass"; }

В этом случае последняя строка результата выполнения программы будет выгля деть так, как показано ниже. Результат: Объект типа MyClass текущий счет равен 1

В версию 4.0 среды .NET Framework добавлены еще две формы метода Concat(), приведенные ниже. public static string Concat(IEnumerable values) public static string Concat(IEnumerable values)

В первой форме этого метода возвращается символьная строка, состоящая из сце пленных строковых представлений ряда значений, имеющихся в объекте, который обозначается параметром values и может быть объектом любого типа, реализующего интерфейс IEnumerable. А во второй форме данного метода сцепляются строки, обозначаемые параметром values. (Следует, однако, иметь в виду, что если прихо дится выполнять большой объем операций сцепления символьных строк, то для этой цели лучше воспользоваться средствами класса StringBuilder.) Поиск в строке

В классе String предоставляется немало методов для поиска в строке. С их помо щью можно, например, искать в строке отдельный символ, строку, первое или послед нее вхождение того и другого в строке. Следует, однако, иметь в виду, что поиск может осуществляться либо с учетом культурной среды либо порядковым способом.

Для обнаружения первого вхождения символа или подстроки в исходной стро ке служит метод IndexOf(). Для него определено несколько перегружаемых форм. Ниже приведена одна из форм для поиска первого вхождения символа в исходной строке. public int IndexOf(char value)

В этой форме метода IndexOf() возвращается первое вхождение символа value в вызывающей строке. Если символ value в ней не найден, то возвращается значение -1. При таком поиске символа настройки культурной среды игнорируются. Следователь но, в данном случае осуществляется порядковый поиск первого вхождения символа.

Ниже приведены еще две формы метода IndexOf(), позволяющие искать первое вхождение одной строки в другой. public int IndexOf(String value) public int IndexOf(String value, StringComparison comparisonType)

В первой форме рассматриваемого здесь метода поиск первого вхождения строки, обозначаемой параметром value, осуществляется с учетом культурной среды. А во вто рой форме предоставляется возможность указать значение типа StringComparison, обозначающее способ поиска. В если искомая строка не найдена, то в обеих формах данного метода возвращается значение -1.

Для обнаружения последнего вхождения символа или строки в исходной строке служит метод LastIndexOf(). И для этого метода определено несколько перегружае мых форм. Ниже приведена одна из форм для поиска последнего вхождения символа в вызывающей строке. public int LastlndexOf(char value)

В этой форме метода LastIndexOf() осуществляется порядковый поиск, а в итоге возвращается последнее вхождение символа value в вызывающей строке или же зна чение -1, если искомый символ не найден.

Ниже приведены еще две формы метода LastIndexOf(), позволяющие искать по следнее вхождение одной строки в другой. public int LastlndexOf(string value) public int LastlndexOf(string value, StringComparison comparisonType)

В первой форме рассматриваемого здесь метода поиск последнего вхожде ния строки, обозначаемой параметром value, осуществляется с учетом культур ной среды. А во второй форме предоставляется возможность указать значение типа StringComparison, обозначающее способ поиска. Если же искомая строка не найде на, то в обеих формах данного метода возвращается значение -1.

В классе String предоставляются еще два интересных метода поиска в строке: IndexOfAny() и LastIndexOfAny(). Оба метода обнаруживают первый символ, со впадающий с любым набором символов. Ниже приведены простейшие формы этих методов. public int IndexOfAny(char[] anyOf) public int LastIndexOfAny(char[] anyOf)

Метод IndexOfAny() возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке, а метод LastIndexOfAny() – индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вы зывающей строке. Если совпадение символов не обнаружено, то в обоих случаях воз вращается значение -1. Кроме того, в обоих рассматриваемых здесь методах осущест вляется порядковый поиск.

При обработке символьных строк нередко оказывается полезно знать, начинается ли строка заданной подстрокой или же оканчивается ею. Для этой цели служат мето ды StartsWith() и EndsWith(). Ниже приведены их простейшие формы. public bool StartsWith(string value) public bool EndsWith(string value)

Метод StartsWith() возвращает логическое значение true, если вызывающая строка начинается с подстроки, переданной ему в качестве аргумента value. А метод EndsWith() возвращает логическое значение true, если вызывающая строка оканчи вается подстрокой, переданной ему в качестве аргумента value. В противном случае оба метода возвращают логическое значение false.

В обоих рассматриваемых здесь методах поиск осуществляется с учетом культурной среды. Для того чтобы указать конкретный способ поиска подстроки, можно восполь зоваться приведенными ниже вариантами этих методов с дополнительным параме тром типа StringComparison. public bool StartsWith(string value, StringComparison comparisonType) public bool EndsWith(string value, StringComparison comparisonType)

Оба варианта рассматриваемых здесь методов поиска действуют таким же образом, как и предыдущие их варианты. Но в то же время они позволяют явно указать кон кретный способ поиска.

В приведенном ниже примере программы демонстрируется применение несколь ких методов поиска в строке. // Продемонстрировать поиск в строке. using System; class StringSearchDemo { static void Main() { string str = "C# обладает эффективными средствами обработки строк."; int idx; Console.WriteLine("Строка str: " + str); idx = str.IndexOf('о'); Console.WriteLine("Индекс первого вхождения символа 'o': " + idx); idx = str.LastIndexOf('о'); Console.WriteLine("Индекс последнего вхождения символа 'o': " + idx); idx = str.IndexOf("ми", StringComparison.Ordinal); Console.WriteLine("Индекс первого вхождения подстроки "ми": " + idx); idx = str.LastlndexOf("ми", StringComparison.Ordinal); Console.WriteLine("Индекс последнего вхождения подстроки "ми": " + idx); char[] chrs = { 'а', 'б', 'в' }; idx = str.IndexOfAny(chrs); Console.WriteLine("Индекс первого вхождения символов " + " 'а', 'б' или 'в': " + idx); if(str.StartsWith("C# обладает", StringComparison.Ordinal)) Console.WriteLine("Строка str начинается с подстроки "C# обладает!""); if(str.EndsWith("строк.", StringComparison.Ordinal)) Console.WriteLine("Строка str оканчивается подстрокой "строк.""); } }

Ниже приведен результат выполнения этой программы. Строка str: C# обладает эффективными средствами обработки строк. Индекс первого вхождения символа 'о': 3 Индекс последнего вхождения символа 'о': 49 Индекс первого вхождения подстроки "ми": 22 Индекс последнего вхождения подстроки "ми": 33 Индекс первого вхождения символов 'а', 'б' или 'в': 4 Строка str начинается с подстроки "C# обладает" Строка str оканчивается подстрокой "строк."

Во многих случаях полезным для поиска в строке оказывается метод Contains(). Его общая форма выглядит следующим образом. public bool Contains(string value)

Метод Contains() возвращает логическое значение true, если вызывающая стро ка содержит подстроку, обозначаемую параметром value, в противном случае – ло гическое значение false. Поиск указываемой подстроки осуществляется порядковым способом. Этот метод особенно полезен, если требуется только выяснить, находится ли конкретная подстрока в другой строке. В приведенном ниже примере программы демонстрируется применение метода Contains(). // Продемонстрировать применение метода Contains(). using System; class ContainsDemo { static void Main() { string str = "C# сочетает эффективность с производительностью."; if(str.Contains("эффективность")) Console.WriteLine("Обнаружена подстрока "эффективность"."); if(str.Contains("эффе")) Console.WriteLine("Обнаружена подстрока "эффе"."); if(!str.Contains("эффективный")) Console.WriteLine("Подстрока "эффективный!" не обнаружена."); } }

Выполнение этой программы приводит к следующему результату. Обнаружена подстрока "эффективность". Обнаружена подстрока "эффе". Подстрока "эффективный" не обнаружена.

Как следует из результата выполнения приведенной выше программы, метод Contains() осуществляет поиск на совпадение произвольной последовательности символов, а не только целых слов. Поэтому в вызывающей строке обнаруживается и подстрока "эффективность", и подстрока "эффе". Но поскольку в вызывающей стро ке отсутствует подстрока "эффективный", то она и не обнаруживается.

У некоторых методов поиска в строке имеются дополнительные формы, позволяю щие начинать поиск по указанному индексу или указывать пределы для поиска в стро ке. В табл. 22.3 сведены все варианты методов поиска в строке, которые поддерживают ся в классе String.

Таблица 22.3. Методы поиска в строке, поддерживаемые в классе String Метод Назначение public bool Contains(string value) Возвращает логическое значение true, если вызывающая строка содержит подстроку value. Если же подстрока value не обнаружена, возвращается логическое значение false public bool EndsWith(string value) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false public bool EndsWith(string value, StringComparison comparisonType) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false. Параметр comparisonType определяет конкретный способ поиска public bool EndsWith(string value, bool ignoreCase, CultureInfo culture) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value, иначе возвращает логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture public int IndexOf(char value) Возвращает индекс первого вхождения символа value в вызывающей строке. Если искомый символ не обнаружен, то возвращается значение -1 public int IndexOf(string value) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Если искомая подстрока не обнаружена, то возвращается значение -1 public int IndexOf(char value, int startIndex) Возвращает индекс первого вхождения символа value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Метод возвращает значение -1, если искомый символ не обнаружен public int IndexOf(string value, int startIndex) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(char value, int startIndex, int count) Возвращает индекс первого вхождения символа value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен public int IndexOf(string value, int startIndex, int count) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, int startIndex, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, int startIndex, int count, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastlndexOf(char value) Возвращает индекс последнего вхождения символа value в вызывающей строке. Если искомый символ не обнаружен, возвращается значение -1 public int IndexOfAny(char[] anyOf) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int IndexOfAny(char[] anyOf, int startIndex) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int IndexOfAny(char[] anyOf, int startIndex, int count) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOf(string value) Возвращает индекс последнего вхождения подстроки value в вызывающей строке. Если искомая подстрока не обнаружена, возвращается значение -1 public int LastIndexOf(char value, int startIndex) Возвращает индекс последнего вхождения символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомый символ не обнаружен public int LastIndexOf(string value, int startIndex) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(char value, int startIndex, int count) Возвращает индекс последнего вхождения символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен public int LastIndexOf(string value, int startIndex, int count) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в вызывающей строке. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, int startIndex, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, int startIndex, int count, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOfAny(char[] anyOf) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOfAny(char[] anyOf, int startIndex) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается в обратном порядке с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOfAny(char[] anyOf, int startIndex, int count) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count, число элементов, определяемых параметром count. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public bool StartsWith(string value) Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false public bool StartsWith(string value, StringComparison comparisonType) Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false. Параметр comparisonType определяет конкретный способ выполнения поиска public bool StartsWith(string value, bool ignoreCase, CultureInfo culture) Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture Разделение и соединение строк

К основным операциям обработки строк относятся разделение и соединение. При разделении строка разбивается на составные части, а при соединении строка состав ляется из отдельных частей. Для разделения строк в классе String определен метод Split(), а для соединения – метод Join().

Существует несколько вариантов метода Split(). Ниже приведены две формы этого метода, ставшие наиболее часто используемыми, начиная с версии C# 1.0. public string[ ] Split(params char[ ] separator) public string[ ] Split(params char[ ] separator, int count)

В первой форме метода Split() вызывающая строка разделяется на составные части. В итоге возвращается массив, содержащий подстроки, полученные из вызы вающей строки. Символы, ограничивающие эти подстроки, передаются в массиве separator. Если массив separator пуст или ссылается на пустую строку, то в каче стве разделителя подстрок используется пробел. А во второй форме данного метода возвращается количество подстрок, определяемых параметром count.

Существует несколько форм метода Join(). Ниже приведены две формы, ставшие доступными, начиная с версии 2.0 среды .NET Framework. public static string Join(string separator, string[] value) public static string Join(string separator, string[] value, int startIndex, int count)

В первой форме метода Join() возвращается строка, состоящая из сцепляемых подстрок, передаваемых в массиве value. Во второй форме также возвращается стро ка, состоящая из подстрок, передаваемых в массиве value, но они сцепляются в опре деленном количестве count, начиная с элемента массива value[startIndex]. В обе их формах каждая последующая строка отделяется от предыдущей разделительной строкой, определяемой параметром separator.

В приведенном ниже примере программы демонстрируется применение методов Split() и Join(). // Разделить и соединить строки. using System; class SplitAndJoinDemo { static void Main() { string str = "Один на суше, другой на море."; char[] seps = {' ', '.', ',' }; // Разделить строку на части. string[] parts = str.Split(seps); Console.WriteLine("Результат разделения строки: "); for(int i=0; i < parts.Length; i++) Console.WriteLine(parts[i]); // А теперь соединить части строки. string whole = String.Join(" | ", parts); Console.WriteLine("Результат соединения строки: "); Console.WriteLine(whole); } }

Ниже приведен результат выполнения этой программы. Результат разделения строки: Один на суше другой на море Результат соединения строки: Один | на | суше | | другой | на | море


    Ваша оценка произведения:

Популярные книги за неделю