-1

我有这个字符串:
'{"file_type":"/video/2012/09/10/prn-exceo.jpg"}'
我想要:
'{file_type:/video/2012/09/10/prn-exceo.jpg}'
尝试过: 我做错了什么
$str=~m/\"(.+)\"/$str=~ s/"//g;

更新
一个 json 调用给了我这个字符串:
'{"file_type":"/video/2012/09/10/prn-exceo.jpg"}'
我试图prn-exceo.jpg像这样返回:
my $json = JSON->new->allow_nonref->encode('prn-exceo.jpg');

但我有一个parsererror

4

3 回答 3

3

你没有做错什么。替换做你想要的。

david@elgin ~ $ cat x.pl
use strict;
use warnings;
use v5.14;

my $str = '{"file_type":"/video/2012/09/10/prn-exceo.jpg"}';
$str=~ s/"//g;
say $str;
~ :
david@elgin ~ $ perl x.pl
{file_type:/video/2012/09/10/prn-exceo.jpg}
于 2013-02-07T21:20:12.910 回答
1

在我看来,您使用 JSON 非常不正确。让我看看我是否理解正确,您从某个外部源获取包含 JSON 的字符串,然后您想从file_type键中获取值。在这种情况下,您想要解码 JSON 字符串,而不是对其进行编码。

#!/usr/bin/env perl

use strict;
use warnings;

use JSON;

my $json_string = '{"file_type":"/video/2012/09/10/prn-exceo.jpg"}';

my $data = JSON->new->decode($json_string);
my $file = $data->{file_type};

print $file . "\n";

# if you just want the filename then use 

use File::Basename;

my $filename = fileparse $file;

print $filename . "\n";
于 2013-02-08T02:34:58.123 回答
1

另一种方法是使用tr运算符:

$str =~ tr/"//d;
于 2013-02-07T21:22:28.480 回答