Доступ к отдельным символам в строке

Работа со строками

Класс string (System.String) содержит множество полезных методов, позволяющих, например:

• Конкатенировать две и более строк

• Сравнить две строки

• Обратиться к отдельным символам или подстрокам заданной строки

• Вставить часть одной строки в другую

• Скопировать строку

• Определить число символов в строке

Для использования этих методов требуется определенная система идентификации отдельных символов и подстрок в строке. Предположим, например, что нужно ско­пировать подстроку "is" следующей строки:

"This is string"

Для решения такой задачи в классе string применяется целочисленный индекс, от­считываемый от 0, а не от 1 (рис. 1.). Очевидно, что он нумерует все символы, вклю­чая пробелы и знаки пунктуации.

                           
T H I S   I S   S T R I N G

Чтобы обратиться к подстроке "is", необходимо написать команду со следующим смыслом: "прочесть 2 символа, начиная с позиции 5". В строке 3 следующего фраг­мента показано, как это делается в С#:

string andString;

string myString = "This is string";

andString = myString.SubString(5, 2);

Здесь применяется метод Substring класса string. Он копирует "is" из myString в andString. Таким образом, выражение myString.SubString(5, 2) указывает программе возвратить подстроку строки myString, начинающуюся в пози­ции 5 и содержащую 2 символа.

Предположим, что нам необходимо проанализировать некоторый текст и вычислить сколько в этом тексте содержится символов и слов. Для этого нам необходимо понять каким образом можно определять слово в тексте. Легко догадаться, что количество слов равно количеству пробелов плюс один. Тогда возникает другой вопрос, как определить пробел. Для этого в языке С# существует специальный статический метод:

char.IsWhiteSpace(ch)

Здесь ch это анализируемый символ.

Создадим программу, которая выводит количество символов в тексте, а также количество слов в тексте.

using System;

class TextAnalyzer

{

public static void Main()

{

string myText;

int numWhitespaceChars = 0;

int numWords = 0;

char ch;

int index = 0;

Console.WriteLine("Please enter text:");

myText = Console.ReadLine();

myText = myText.ToUpper();

while(index < myText.Length)

{

ch = myText[index];

if(char.IsWhiteSpace(ch))

numWhitespaceChars++;

index++;

}

numWords = numWhitespaceChars + 1;

Console.WriteLine("Text analysis:");

Console.WriteLine("Number of symbols: {0:N0}", index);

Console.WriteLine("Number of words: {0:N0}", numWords);

Console.ReadLine();

}

}

Другие методы необходимые для анализа текста

char.lsLetter(ch) – определяет является ли текущий символ буквой.

char.IsDigit(ch) – определяет является ли текущий символ цифрой.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: