Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Методи Join й Split
Методи Join й Split виконують над рядком тексту взаємно зворотні перетворення. Динамічний метод Split дозволяє здійснити розбір тексту на елементи. Статичний метод Join виконує зворотну операцію, збираючи рядок з елементів. Заданий рядком текст найчастіше являє собою сукупність структурованих елементів - абзаців, пропозицій, слів, скобкових виражень і т.д. При роботі з таким текстом необхідно розділити його на елементи, користуючись спеціальними роздільниками елементів, - це можуть бути пробіли, дужки, розділові знаки. Практично подібні завдання виникають постійно при роботі зі структурованими текстами. Методи Split й Join полегшують рішення цих завдань. Динамічний метод Split, як звичайно, перевантажений. Найбільше часто використовувана реалізація має наступний синтаксис: public string[] Split(params char[])На вхід методу Split передається один або кілька символів, інтерпритуемих як роздільники. Об'єкт string, що викликав метод, розділяється на підрядки, обмежені цими роздільниками. Із цих підрядків створюється масив, що повертає як результат методу. Інша реалізація дозволяє обмежити число елементів масиву, що повертає. Синтаксис статичного методу Join такий: public static string Join(string delimiters, string[] items)Як результат метод повертає рядок, отриманий конкатенацією елементів масиву items, між якими уставляється рядок роздільників delimiters. Як правило, рядок delimiters складається з одного символу, що і розділяє в результуючому рядку елементи масиву items; але в окремих випадках обмежником може бути рядок з декількох символів. Розглянемо приклади застосування цих методів. У першому з них рядок представляє складнопідрядну пропозицію, що розбивається на прості пропозиції. У другому пропозицію розділяється на слова. Потім виробляється зворотна зборка розібраного тексту. От код відповідної процедури: public void TestSplitAndJoin(){ string txt = " А це пшениця, що у темному прикомірку зберігається, " +" у будинку, що побудував Джек! "; Console.WriteLine(" txt={0}", txt); Console.WriteLine(" Поділ тексту на прості пропозиції: "); string[] SimpleSentences, Words; //розмірність масивів SimpleSentences й Words //установлюється автоматично відповідно до //розмірністю масиву, що повертає методом Split SimpleSentences = txt.Split(', '); for(int i=0; i< SimpleSentences.Length; i++) Console.WriteLine(" SimpleSentences[{0}]= {1}", i, SimpleSentences[i]); string txtjoin = string.Join(", ", SimpleSentences); Console.WriteLine(" txtjoin={0}", txtjoin); Words = txt.Split(', ', ' '); for(int i=0; i< Words.Length; i++) Console.WriteLine(" Words[{0}]= {1}", i, Words[i]); txtjoin = string.Join(" ", Words); Console.WriteLine(" txtjoin={0}", txtjoin); }//TestSplitAndJoinРезультати виконання цієї процедури показані на мал. 6. Рис. 15.6. Розбір і зборка рядка тексту
Зверніть увагу, що методи Split й Join добре працюють, коли при розборі використається тільки один роздільник. У цьому випадку зборка дійсно є зворотною операцією й дозволяє відновити вихідний рядок. Якщо ж при розборі задається деякі безліч роздільників, то виникають дві проблеми: · неможливо при зборці відновити рядок у колишньому виді, оскільки не зберігається інформація про те, який з роздільників був використаний при розборі рядка. Тому при зборці між елементами уставляється один роздільник, можливо, що складається з декількох символів; · при розборі двох підряд, що йдуть роздільників, передбачається, що між ними перебуває порожнє слово. Зверніть увагу в тексті нашого приклада, як і покладено, після коми треба пробіл. При розборі тексту на слова як роздільники зазначені символи пробілу й коми. Із цієї причини в масиві слів, отриманому в результаті розбору, є порожні слова. Якщо при розборі пропозиції на слова використати як роздільник тільки пробіл, то порожні слова не з'являться, але кома буде частиною деяких слів. Як завжди, є кілька способів упоратися із проблемою. Один з них полягає в тому, щоб написати власну реалізацію цих функцій, іншої - у коректуванні отриманих результатів, третій - у використанні могутнішого апарата регулярних виражень, і про нього ми поговоримо трохи пізніше.
|