我想根据多个字符长度拆分一行,并将它们存储在单独的变量中.
例如:$myString =“米奇24美国活着
这里前12个字符是用户名,接下来2个是年龄,接下来23个字符是国家,接下来7个是状态.
那么有没有办法保存它们使用split()或s ///单独存储它们?
谢谢,
例如:$myString =“米奇24美国活着
这里前12个字符是用户名,接下来2个是年龄,接下来23个字符是国家,接下来7个是状态.
那么有没有办法保存它们使用split()或s ///单独存储它们?
谢谢,
解决方法
使用正则表达式匹配,或
substr
:
my $myString = "Mickey 24 USA alive"; if ($myString =~ /(.{12})(.{2})(.{23})(.*)/) { $name = $1; $age = $2; $country = $3; $status = $4; print "<$name><$age><$country><$status>"; } else { warn "line not long enough"; }
输出:
<Mickey ><24>< USA>< alive>
要在事后剥离变量间距,只需使用另一个正则表达式:
$value =~ s/^\s+|\s+$//g;
甚至可以使用以下方法在一行中完成:
s/^\s+|\s+$//g for ($name,$age,$country,$status);