【发布时间】:2020-09-22 05:55:14
【问题描述】:
我有这样的文件,
SR Name Rollno Class
1 Sanjay 01 B
2 Rahul_Kumar_Khanna 09 A
现在我需要添加“|”之间。所以它应该看起来像
SR | Name |Rollno | Class|
1 | Sanjay |01 | B |
2 | Rahul_Kumar_Khanna|09 | A |
我正在使用 Perl6::form
my $text;
foreach my $line (@arr) {
my ($SR, $Name, $Rollno, $Class) = split (" ", $line);
my $len = length $Name;
$text = form
'| {||||||||} | {||||||||} | {||||||||} | {||||||||}|',
$SR, $Name, $Rollno, $Class;
print $text;
}
到目前为止,我已经完成了,但是名称没有正确显示。我添加了额外的“|”名义上。有什么办法可以加“|”通过计算长度(如下)。我试过了,但出错了。
'| {||||||||} | {||||||||}x$len | {||||||||} | {||||||||}|',
【问题讨论】:
-
你怎么知道“Rahul Kumar”是一个字段(而不是两个字段)?如果你在空间上分割(就像你一样),它将变成两个字段..
-
@HåkonHægland 好的,现在检查。现在它将进入一个领域。我的问题是,如果将来我需要添加比现有名称更大的其他名称,那么我必须添加额外的“|”这样名字就不会被删掉了。
-
@HG: 比现有名称更大的名称 如果更大的名称用空格分隔,那么逻辑 (
split (" ", $line)) 将无法按照我的预期工作相信。 -
@vkk05 我尝试使用比 "Rahul_Kumar_Khanna" 更大的名字,但我面临的问题是我需要增加 "|"的第 2 列,这样全名就不会被删减。拆分工作正常。
-
@HG 您可以先扫描文件作为预处理步骤以找到名称字段的最大长度,然后使用最大长度再次遍历行以格式化名称字段..