Дељење низа само је један начин манипулације низовним подацима. Такође можете извршити замјене да бисте замијенили један дио низа другим. На пример, у примеру низа (фоо, бар, баз) замена "фоо" са "боо" у ће добити "боо, бар, баз." То можете учинити и многе друге ствари користећи суб и гсуб метода у класи стрингова.
Много опција за замјену Руби
Методе супституције долазе у две врсте. Тхе суб метода је најосновнија од ове две и долази са најмањим бројем изненађења. Једноставно замењује прву инстанцу одређеног узорка заменом.
Док суб замењује само прву инстанцу, гсуб метода замјењује сваку инстанцу узорка замјеном. Поред тога, обоје суб и гсуб имати суб! и гсуб! колегама. Запамтите, методе у Руби тај крај у ускличнику мења променљиву место уместо враћања модификоване копије.
Претражите и замените
Најосновнија употреба метода замјене је замјена једног статичког низа претраживања једним статичким замјенским низом. У горњем примеру, „фоо“ је замењен са „боо“. Ово се може урадити за прво појављивање "фоо" у низу користећи суб методом или са свим појавама "фоо" коришћењем гсуб метод.
#! / уср / бин / енв рубин
а = "фоо, бар, баз"
б = а.суб ("фоо", "боо")
ставља б
$ ./1.рб
фоо, бар, баз
гсуб $ ./1.рб
боо, бар, баз
Флексибилно претраживање
Тражење статичких низова може ићи само тако далеко. На крају ћете наићи на случајеве у којима је подскуп жице или ће се подударати жице са опционалним компонентама. Методе супституције могу, наравно, одговарати регуларним изразима уместо статичких низова. То им омогућава да буду много флексибилнији и одговарају практички било којем тексту о којем можете сањати.
Овај пример је мало реалнији свет. Замислите скуп вредности одвојених зарезима. Ове вредности уносе се у табеларни програм над којим немате контролу (затворен извор). Програм који генерише ове вредности је такође затворени извор, али шаље неке лоше форматиране податке. Нека поља имају размаке након зареза и то узрокује прекид програма табулатор.
Једно од могућих решења је писање Руби програма који ће бити „лепак“ или филтер између два програма. Овај Руби програм ће поправити све проблеме у обликовању података тако да табулатор може радити свој посао. Да бисте то учинили, прилично је једноставно: замените зарез, а затим број размака само зарезом.
#! / уср / бин / енв рубин
СТДИН.еацх до | л |
л.гсуб! (/, + /, ",")
ставља л
крај
гсуб $ цат дата.ткт
10, 20, 30
12.8, 10.4,11
гсуб $ цат дата.ткт | ./2.рб
10,20,30
12.8,10.4,11
Флексибилне замене
Замислите ову ситуацију. Поред мањег форматирања грешке, програм који производи податке производи податке о броју у научној нотацији. Програм табулатор то не разуме, па ћете морати да га замените. Очигледно, једноставан гсуб овде неће радити јер ће замена бити другачија сваки пут када се замена изврши.
Срећом, методе супституције могу блокирати аргументе замјене. При сваком проналажењу низа претраживања, текст који се подудара са претраживачким низом (или регек-ом) се прослеђује овом блоку. Вриједност добијена од блока користи се као замјенски низ. У овом примеру број с помичном тачком у облику научне нотације (као што је 1.232е4) се претвара у нормалан број са децималном тачком. Низ се претвара у број са на ф, онда се број форматира помоћу форматног низа.
#! / уср / бин / енв рубин
СТДИН.еацх до | л |
л.гсуб! (/-?\д+\.\д+е-?\д+/) до | н |
"% .3ф"% н.то_ф
крај
л.гсуб! (/, + /, ",")
ставља л
крај
гсуб $ цат флоатдата.ткт
2.215е-1, 54, 11
3.15668е6, 21, 7
гсуб $ цат флоатдата.ткт | ./3.рб
0.222,54,11
3156680.000,21,7
Не познајете регуларне изразе?
Идемо корак уназад и погледајмо то регуларни израз. Изгледа загонетно и компликовано, али врло је једноставно. Ако нисте упознати са правилним изразима, они могу бити прилично загонетни. Међутим, након што их упознате, то су једноставне и природне методе описивања текста. Постоји неколико елемената, а неколико елемената има квантификаторе.
Примарни елемент овде је \ д класа карактера. То ће одговарати било којој цифри, знаковима 0 до 9. Квантификатор + се користи са цифром цифара знакова да означава да једна или више од ових цифара треба да се подударају у реду. Имате три групе цифара, од којих су две одвојене знаком ".„а друго раздвојено словом“е"(за експонент).
Други елемент који плута око је знак минус, који користи знак „?"квантификатор. То значи „нула или један“ ових елемената. Укратко, могу постојати негативни знакови на почетку броја или експонента.
Друга два елемента су. (период) и знак е карактер. Комбинујте све ово и добит ћете редован израз (или скуп правила за подударање текста) који одговара бројевима у научном облику (као што је 12.34е56).