/ / робота з масивами символів в perl - масиви, регулярні вирази, perl

робота з масивами символів в perl - масивах, regex, perl

У мене є рядок сказати, s1 = "привіт", я хочуманіпулюємо ним як масивом, наприклад, в c ++ ми можемо використовувати s1 [i] для адреси персонажів цього масиву, як це робити в perl? Я хочу додати символ у s1 [0] з символом у s1 [1]. Я спробував використовувати

  $s=join("",$s1[0],$s1[1]);
$s=$s1[0].$s1[1];
$s=${s1[0]}.${s2[0]};

але я не в змозі об'єднати персонажів. Я хочу додати h і e і поставити він, аналогічно e і l як el і так далі, до кінця слова, а потім продовжувати те саме з наступним словом.

чи можу я також перевірити, чи є s [i] у списку (b, c, d, h, l), і якщо s [i + 1] в (a, e, i, o, u), то додайте s [i ] і s [i + 1].

Вхідний приклад:
Здрастуйте
диск
абонент

Вибірка вибірки:
Здравствуйте
ді с к
ca l le r

Відповіді:

1 для відповіді № 1

В основному ви хочете вставити пробіл між двома символами слова до тих пір, поки вони не є у двох вказаних вами наборах.

Ви можете зробити це за допомогою substr як це демонструють інші, але цей тип текстової маніпуляції - це одне, для чого регулярні вирази були розроблені для:

use strict;
use warnings;

while (<DATA>) {
s/(?![bcdhl][aeiou])wK(?=w)/ /g;
print;
}

__DATA__
hello
disk
caller

Виходи:

he l lo
di s k
ca l le r

0 для відповіді № 2

Так, використовуючи substr() щоб вибрати окремих персонажів:

perl -E "$s="hello";say substr($s,0,1),substr($s,4,1)"

Вихід:

ho

0 для відповіді № 3

substr () можливо:

print substr($s, $_, 1), " " for (0..length($s) - 1)

Вихід:

Здравствуйте

substr () також добре для операцій на місці, наскільки він повертає значення ref:

substr($s,0,2) = "";
say $s;

Вихід:

лло


0 для відповіді № 4
my @char_array = split "", $s1;

@char_array тепер містить усіх символів $s1 рядок, і ним можна маніпулювати, перебирати над ним або робити все, що завгодно, як і з будь-яким іншим масивом.


0 для відповіді № 5

Ти можеш тобі splice для вставки елементів у задане положення масиву:

echo -e "hellondiskncaller" | perl -F"" -ane " splice (@F,2,0," "); splice(@F,4,0," "); foreach(@F){print}"
he l lo
di s k
ca l ler

Ви можете використовувати Data :: Dumper для кращої візуалізації під час роботи з масивами:

echo -n "hello" | perl -MData::Dumper -F"" -ane " splice (@F,2,0," "); splice(@F,4,0," ");print Dumper(@F)"
$VAR1 = [
"h",
"e",
" ",
"l",
" ",
"l",
"o"
];