Yurijnd.com
Пятница, 07.02.2025, 03:31
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Подстроки

     

    Подстрокой является последовательность символов, содержащихся в строке. Метод Substring используется для создания новой строки на основании части исходной строки. Одно или несколько вхождений подстроки можно найти с использованием методаIndexOf. Метод Replace используется для замены всех вхождений заданной подстроки новой строкой. Так же, как и методSubstring, метод Replace фактически возвращает новую строку и не изменяет исходную строку. Дополнительные сведения см. в разделах Практическое руководство. Поиск строк с помощью строковых методов (Руководство по программированию в C#) иПрактическое руководство. Изменение содержимого строки (Руководство по программированию в C#).

     
    string s3 = "Visual C# Express";
    System.Console.WriteLine(s3.Substring(7, 2));
    // Output: "C#"
    
    System.Console.WriteLine(s3.Replace("C#", "Basic"));
    // Output: "Visual Basic Express"
    
    // Index values are zero-based
    int index = s3.IndexOf("C");
    // index = 7
    
    
    

    Доступ к отдельным знакам

     

    Нотацию массива можно использовать со значением индекса, чтобы получить доступ только для чтения к отдельным символам, как в следующем примере:

     
    string s5 = "Printing backwards";
    
    for (int i = 0; i < s5.Length; i++)
    {
     System.Console.Write(s5[s5.Length - i - 1]);
    }
    // Output: "sdrawkcab gnitnirP"
    
    
    

    Если методы String не предоставляют функциональных возможностей, которые необходимы для изменения отдельных символов в строке, можно использовать объект StringBuilder, чтобы изменить отдельные символы "на месте", а затем создать новую строку для сохранения результатов с использованием методов StringBuilder. В следующем примере предположим, что необходимо изменить исходную строку определенным образом, а затем сохранить результаты для дальнейшего использования.

     
    string question = "hOW DOES mICROSOFT wORD DEAL WITH THE cAPS lOCK KEY?";
    System.Text.StringBuilder sb = new System.Text.StringBuilder(question);
    
    for (int j = 0; j < sb.Length; j++)
    {
     if (System.Char.IsLower(sb[j]) == true)
     sb[j] = System.Char.ToUpper(sb[j]);
     else if (System.Char.IsUpper(sb[j]) == true)
     sb[j] = System.Char.ToLower(sb[j]);
    }
    // Store the new string.
    string corrected = sb.ToString();
    System.Console.WriteLine(corrected);
    // Output: How does Microsoft Word deal with the Caps Lock key? 
    
    
    

    Строки с нулевыми значениями и пустые строки

     

    Пустая строка — это экземпляр объекта System.String, содержащий 0 знаков. Пустые строки часто используются в различных сценариях программирования, представляя пустое текстовое поле. Для пустых строк можно вызывать методы, потому что такие строки являются допустимыми объектами System.String. Пустые строки инициализируются следующим образом:

     
     
    string s = String.Empty;
    

    Строки со значениями null (с нулевыми значениями), напротив, не ссылаются на экземпляр объекта System.String, любая попытка вызвать метод строки со значением null приведет к ошибке NullReferenceException. Однако такие строки можно использовать в операциях объединения и сравнения с другими строками. В следующих примерах показаны некоторые случаи, в которых ссылка на строку со значением null вызывает либо не вызывает исключение:

     
    static void Main()
    {
     string str = "hello";
     string nullStr = null;
     string emptyStr = String.Empty;
    
     string tempStr = str + nullStr;
     // Output of the following line: hello
     Console.WriteLine(tempStr);
    
     bool b = (emptyStr == nullStr);
     // Output of the following line: False
     Console.WriteLine(b);
    
     // The following line creates a new empty string.
     string newStr = emptyStr + nullStr;
    
     // Null strings and empty strings behave differently. The following
     // two lines display 0.
     Console.WriteLine(emptyStr.Length);
     Console.WriteLine(newStr.Length);
     // The following line raises a NullReferenceException.
     //Console.WriteLine(nullStr.Length);
    
     // The null character can be displayed and counted, like other chars.
     string s1 = "\x0" + "abc";
     string s2 = "abc" + "\x0";
     // Output of the following line: * abc*
     Console.WriteLine("*" + s1 + "*");
     // Output of the following line: *abc *
     Console.WriteLine("*" + s2 + "*");
     // Output of the following line: 4
     Console.WriteLine(s2.Length);
    }
    
    
    

    Использование StringBuilder для быстрого создания строк

     

    Операции со строками в .NET в высокой степени оптимизированы и в большинстве случаев значительно не снижают производительность. Однако в некоторых случаях, например, в непрерывных циклах, выполняющихся сотни и тысячи раз, операции со строками могут влиять на производительность. Класс StringBuilder создает строковый буфер, который позволяет повысить производительность, если в программе обрабатывается много строк. Класс StringBuilder также позволяет заново присваивать отдельные знаки, что не поддерживается встроенным строковым типом данных. Например, данный код заменяет содержимое строки без создания новой строки:

     
    System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");
    sb[0] = 'C';
    System.Console.WriteLine(sb.ToString());
    System.Console.ReadLine();
    
    //Outputs Cat: the ideal pet
    
    
    

    В этом примере объект StringBuilder используется для создания строки из набора числовых типов:

     
    class TestStringBuilder
    {
     static void Main()
     {
     System.Text.StringBuilder sb = new System.Text.StringBuilder();
    
     // Create a string composed of numbers 0 - 9
     for (int i = 0; i < 10; i++)
     {
     sb.Append(i.ToString());
     }
     System.Console.WriteLine(sb); // displays 0123456789
    
     // Copy one character of the string (not possible with a System.String)
     sb[0] = sb[9];
    
     System.Console.WriteLine(sb); // displays 9123456789
     }
    }
    
    
    

    Строки, методы расширения и LINQ

     

    Поскольку тип String реализует IEnumerable<T>, можно использовать методы расширения, определенные в классе Enumerableна строках. Чтобы избежать загромождения рабочего пространства, эти методы исключены из IntelliSense для типа String, но тем не менее, они доступны. Можно также использовать выражения запросов LINQ на строках. Дополнительные сведения см. в разделе LINQ и строки.

    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz