我有一个看起来像这样的字符串:
width=13
height=15
name=Mirek
Run Code Online (Sandbox Code Playgroud)
我想把它变成哈希(使用Perl 6).现在我这样做:
my $text = "width=13\nheight=15\nname=Mirek";
my @lines = split("\n", $text);
my %params;
for @lines {
(my $k, my $v) = split('=', $_);
%params{$k} = $v;
}
say %params.perl;
Run Code Online (Sandbox Code Playgroud)
但我觉得应该有更简洁,更惯用的方式来做到这一点.有没有?
在Perl中,通常有多种方法可以做到这一点,而且当你的问题涉及解析时,一种解决方案当然是正则表达式:
my $text = "width=13\nheight=15\nname=Mirek";
$text ~~ / [(\w+) \= (\N+)]+ %% \n+ /;
my %params = $0>>.Str Z=> $1>>.Str;
Run Code Online (Sandbox Code Playgroud)
另一个有用的数据提取工具是comb(),产生以下单行:
my %params = $text.comb(/\w+\=\N+/)>>.split("=").flat;
Run Code Online (Sandbox Code Playgroud)
您也可以这样编写原始方法:
my %params = $text.split("\n")>>.split("=").flat;
Run Code Online (Sandbox Code Playgroud)
甚至更简单:
my %params = $text.lines>>.split("=").flat;
Run Code Online (Sandbox Code Playgroud)
事实上,只要您的数据格式不会变得更复杂,我就可能会选择那个.
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |