Главная страница

программирование. Руководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт


Скачать 3.32 Mb.
НазваниеРуководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт
Анкорпрограммирование
Дата25.01.2022
Размер3.32 Mb.
Формат файлаrtf
Имя файлаc-40-polnoe-rukovodstvo-2011.rtf
ТипРуководство
#341448
страница68 из 97
1   ...   64   65   66   67   68   69   70   71   ...   97

public static    string    Concat(params    object[] args)

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

.// Продемонстрировать применение объектной формы метода Concat()." using System;

public static int Count = 0; public MyClassO { 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 MyClassO;

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 в ней не найден, jo возвращается значение ‑1. При таком поиске символа настройки культурной среды игнорируются. Следовательно, в данном случае осуществляется порядковый поиск первого вхождения символа. .

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

public int IndexOf(String value)

public int IndexOf(String value, StringComparison comparisonType)

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

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

public int LastlndexOf(char value)

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

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

public int LastlndexOf(string value)

public int LastlndexOf(string value, StringComparison comparisonType)

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

В классе String предоставляются еще два интересных метода поиска в строке: IndexOf Any ( ) и LastlndexOf Any () . Оба метода обнаруживают первый символ, совпадающий с любым набором символов. Ниже приведены простейшие формы этих методов.

public int IndexOfAny(char[] anyOf) public int LastlndexOfAny(char[] anyOf)

Метод IndexOf Any () возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке, а метод LastlndexOfAny () – индекс последнего вхождения любого символа из массива 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('o');

Console.WriteLine("Индекс первого вхождения символа 'o': " + idx); idx = str.LastlndexOf('о');

Console.WriteLine("Индекс последнего вхождения символа 'o': " + idx); idx = str.IndexOf("ми", StringComparison.Ordinal);

Console.WriteLine("Индекс первого вхождения подстроки \"ми\": " + idx); idx = str.LastlndexOf("ми", StringComparison.Ordinal);

Console.WriteLine("Индекс последнего вхождения подстроки \"ми\": " + idx);

char[] chrs = { 1 a',    '6', 1 в' };

idx = str.IndexOfAny(chrs);

Console.WriteLine("Индекс первого вхождения символов " +

" 'а1,    'б'    или    'в': " + 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 Индекс первого вхождения символов 1 а',    'б' или 'в': 4

Строка str начинается с подстроки "C# обладает"

Строка str оканчивается подстрокой "строк."

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

public bool Contains(string value)

Метод Contains () возвращает логическое значение true, если вызывающая строка содержит подстроку, обозначаемую параметром value, в противном случае – логическое значение false. Поиск указываемой подстроки осуществляется порядковым способом. Этот метод особенно полезен, если требуется только выяснить, находится ли конкретная подстрока в другой строке. В приведенном ниже примере программы демонстрируется применение метода Contains ().

// Продемонстрировать применение метода Contains().

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)

public bool EndsWith(string value)

public bool EndsWith(string value, StringComparison comparisonType)

public bool EndsWith(string value, bool ignoreCase, Culturelnfo culture)
Возвращает логическое значение true, если вызывающая строка содержит подстроку value. Если же подстрока value не обнаружена, возвращается логическое значение false

Возвращает логическое значение* true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false. Параметр comparisonType определяет конкретный способ поиска Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value , иначе возвращает
Метод
Назначение
public int
IndexOf(char value)
логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture Возвращает индекс первого вхождения
public int
IndexOf(string value)
символа value в вызывающей строке. Если искомый символ не обнаружен, то возвращается значение ‑1 Возвращает индекс первого вхождения под
public int
IndexOf(char value, int
строки value в вызывающей строке. Если искомая подстрока не обнаружена, то возвращается значение ‑1 Возвращает индекс первого вхождения
startlndex)
символа value в вызывающей строке. По
public int
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex. Метод возвращает значение ‑1, если искомый символ не обнаружен

Возвращает индекс первого вхождения
int startlndex)
подстроки value в вызывающей строке.
public int
IndexOf(char value, int
Поиск начинается с элемента, указываемого по индексу startlndex. Метод возвращает значение ‑1, если искомая подстрока не обнаружена

Возвращает индекс первого вхождения
startlndex,
int count)
символа value в вызывающей строке. По
public in.t
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex , и охватывает число элементов, определяемых параметром count. Метод возвращает значение ‑1, если искомый символ не обнаружен Возвращает индекс первого вхождения под
int startlndex, int count)
строки value в вызывающей строке. По
public int
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex , и охватывает число элементов, определяемых параметром count. Метод возвращает значение ‑1, если искомая подстрока не обнаружена Возвращает индекс первого вхождения
StringComparison comparisonType)
подстроки value в вызывающей строке.
Продолжение табл. 22.3
Метод
Назначение
Параметр comparisonType определяет
конкретный способ выполнения поиска. Метод возвращает значение ‑1, если искомая подстрока не обнаружена
public int IndexOf(string value,
Возвращает индекс первого вхождения
int startlndex , StringComparison
подстроки value в вызывающей строке.
comparison Type)
Поиск начинается с элемента, указываемого по индексу startlndex. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение ‑1, если искомая подстрока не обнаружена
1   ...   64   65   66   67   68   69   70   71   ...   97


написать администратору сайта