Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Практическое руководство. Изменение содержимого строки (Руководство по программированию в C#)
Обновлен: Июль 2008 Поскольку строки являются неизменяемыми, невозможно (без использования небезопасного кода) изменить значение объекта строки после его создания. Однако существует много способов изменения значения строки и сохранения результата в новом объекте строки. Класс System..::.String предоставляет методы, которые обрабатывают входную строку и возвращают новый объект строки. В большинстве случаев можно присвоить новый объект к переменной, содержавшей исходную строку. Класс System.Text.RegularExpressions..::.Regex предоставляет дополнительные методы, работающие аналогичным образом. КлассSystem.Text..::.StringBuilder предоставляет буфер символов, который можно изменить "на месте". Метод StringBuilder..::.ToString вызывается для создания нового объекта строки, который содержит текущее содержимое буфера. Пример В следующем примере показаны различные способы замены или удаления подстрок в указанной строке. Язык C#
Копировать код class ReplaceSubstrings { string searchFor; string replaceWith;
static void Main(string[] args) {
ReplaceSubstrings app = new ReplaceSubstrings(); string s = "The mountains are behind the clouds today.";
// Replace one substring with another with String.Replace. // Only exact matches are supported. s = s.Replace("mountains", "peaks"); Console.WriteLine(s); // Output: The peaks are behind the clouds today.
// Use Regex.Replace for more flexibility. // Replace "the" or "The" with "many" or "Many". // using System.Text.RegularExpressions app.searchFor = "the"; // A very simple regular expression. app.replaceWith = "many"; s = Regex.Replace(s, app.searchFor, app.ReplaceMatchCase, RegexOptions.IgnoreCase); Console.WriteLine(s); // Output: Many peaks are behind many clouds today.
// Replace all occurrences of one char with another. s = s.Replace(' ', '_'); Console.WriteLine(s); // Output: Many_peaks_are_behind_many_clouds_today.
// Remove a substring from the middle of the string. string temp = "many_"; int i = s.IndexOf(temp); if (i >= 0) { s = s.Remove(i, temp.Length); } Console.WriteLine(s); // Output: Many_peaks_are_behind_clouds_today.
// Remove trailing and leading whitespace. // See also the TrimStart and TrimEnd methods. string s2 = " I'm wider than I need to be. "; // Store the results in a new string variable. temp = s2.Trim(); Console.WriteLine(temp); // Output: I'm wider than I need to be.
// Keep the console window open in debug mode. Console.WriteLine("Press any key to exit"); Console.ReadKey(); }
// Custom match method called by Regex.Replace // using System.Text.RegularExpressions string ReplaceMatchCase(Match m) { // Test whether the match is capitalized if (Char.IsUpper(m.Value[0]) == true) { // Capitalize the replacement string // using System.Text; StringBuilder sb = new StringBuilder(replaceWith); sb[0] = (Char.ToUpper(sb[0])); return sb.ToString(); } else { return replaceWith; } } } Для доступа к отдельным символам в строке с помощью нотаций массива можно использовать объект StringBuilder, перегружающий оператор [] для предоставления доступа к его внутреннему буферу символов. Также можно преобразовать строку в массив символов с помощью метода ToCharArray. В следующем примере используется ToCharArray для создания массива. Затем некоторые элементы массива изменяются. Конструктор строк, принимающий массив символов в качестве входного параметра, затем вызывается для создания новой строки. Язык C#
Копировать код class ModifyStrings { static void Main() { string str = "The quick brown fox jumped over the fence"; System.Console.WriteLine(str);
char[] chars = str.ToCharArray(); int animalIndex = str.IndexOf("fox"); if (animalIndex != -1) { chars[animalIndex++] = 'c'; chars[animalIndex++] = 'a'; chars[animalIndex] = 't'; }
string str2 = new string(chars); System.Console.WriteLine(str2);
// Keep the console window open in debug mode System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } } /* Output: The quick brown fox jumped over the fence The quick brown cat jumped over the fence */ Следующий пример предоставлен для тех редких случаев, в которых может понадобиться изменить строку на месте с помощью небезопасного кода аналогично массивам символов стиля C. В примере показан доступ к отдельным символам "на месте" с помощью фиксированного ключевого слова. Также в нем показано одно возможное побочное действие небезопасных операций со строками, которое является результатом внутреннего хранения (интернирования) компилятором C# строк. В общем, использовать этот метод следует только в тех случаях, когда это совершенно необходимо.
|
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 202. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |