Перезаписать пустой строкой в ​​файле чтение строки Perl - PullRequest
0 голосов
/ 10 ноября 2011

Я работаю над сценарием, который удалит текст в заданном месте, отделенном xFE с текстовыми идентификаторами как x14.

Вот пример строки:

þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ

(Примечание: символ xFE не будет отображаться должным образом. Извините.)

Я хочу получить nth þþ.Я уже разбил его на \ xFE и могу проверить значение, но я хочу очистить значение между þþ.

Есть идеи?

ОБНОВЛЕНИЕ

Просто чтобы уточнить, что я делаю, это чтение файла, и в позиции nTh на строке в этом файле я хочу заменить содержимое, окруженное указанными символами..Это файл CSV, в котором используются символы \ xFE и \ x14.То, что я пытаюсь сделать, это разделить строку в \ xFE и затем получить значение между символами \ x14, а затем перезаписать это значение в файле.

1 Ответ

0 голосов
/ 10 ноября 2011

Я использую строку 'aaZbbZccZddZeeZff', чтобы легче было идентифицировать n-й элемент, а не символы, которые вы используете.

В качестве регулярного выражения, чтобы удалить четвертый элемент,

my $data = 'aaZbbZccZddZeeZff';
$data =~ s/((?:..Z){3})../\1/;
print $data;
print "\n";

Возвращает строку 'aaZbbZccZZeeff' (обратите внимание на двойной разделитель - хотя это легко исправить, добавив разделитель в совпадение).

Если вы уже разбили его на список,также возможно использовать соединение, чтобы удалить элемент из списка и затем восстановить строку.

my $data = 'aaZbbZccZddZeeZff';
my @data = split('Z',$data);
splice(@data,3,1);
print $data;
print "\n";

Это печатает 'aaZbbZccZeeZff'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...