Perl脚本字符串分割拼接异常:实际输出与预期不符求助
问题解决
问题根源
- 你添加的
$line =~ s/]:/\n]:/g会把]:替换成换行加]:,直接破坏了原字符串的连续性,导致分割后的$spl[2]包含换行符,输出时自然会换行。 - 仅用
,分割字符串,没有保留原字符串末尾的]: 1122部分,拼接逻辑也没覆盖这部分内容。
修正后的代码
#!/usr/bin/perl -w open my $data, $ARGV[0] or die "Can't open $ARGV[0] for reading: $!"; while( my $line = <$data> ) { # 用正则匹配提取需要的部分并重组 if ($line =~ /, (\d+), (\w+)](.*)/) { print "$2-$1]$3\n"; } }
代码说明
- 移除了破坏字符串结构的换行替换操作。
- 使用正则表达式直接捕获数字(
1234)、任务名(task)以及后面的剩余内容(: 1122),然后按任务名-数字]:剩余内容的格式重组输出,完全匹配你的期望结果。
测试验证
输入:
, 1234, task]: 1122
输出:
task-1234]: 1122
内容的提问来源于stack exchange,提问作者Jaff_NL
相关产品推荐
相关产品推荐

