【问题标题】:Perl String Replace? [closed]Perl 字符串替换? [关闭]
【发布时间】:2013-03-08 19:53:05
【问题描述】:

我的字符串如下,我想删除第一个 { ,只有第一个是字符串的开头。该字符串在替换之前打印正常,但在替换它的空字符串之后。

use strict;
use warnings;

my $string = {"something":[{"some":"12","some":"something","data":"","data":"data2","age":"23"},{......},{.....}]}

# the string is valid as it is json from some array function.

print $string."\n";   #My string prints fine here
 $string = s/\{//;

print "String after replacement".".$string." testing";

【问题讨论】:

  • 技术上$string在这种情况下是一个哈希引用,而不是一个字符串。
  • 这不是您的原始代码,因为此代码无法编译。 $string 赋值是一个不带引号的 json 字符串,最后一个 print 语句包含 5 个引号。除了您遇到问题的确切代码之外,不要发布任何内容。

标签: regex json perl replace


【解决方案1】:

我强烈建议您使用现有的、经过测试和调试的 JSON 模块来读取 JSON、修改数据结构并将其写回,而不是尝试手动处理 JSON。

请参阅 JSON 了解可以为您完成此任务的模块。

【讨论】:

【解决方案2】:

替换:

$string = s/\{//;

与:

$string =~ s/\{//;

【讨论】:

  • 哦,伙计,我昨天花了半个小时才弄清楚……;)
  • 谢谢,它成功了。我想要那个简单的答案。
【解决方案3】:

正如之前在线程中所说,另一种方法是使用JSON::XS模块,它会更快 比JSONredbmk 说的,它处理UTF-8 更好。

【讨论】:

  • 来自JSON docs: 这个模块尝试默认使用JSON::XS但失败了,改用JSON::PP。所以它的功能完全依赖JSON::XS或者JSON::PP
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 2022-01-08
  • 2012-09-21
  • 2015-10-11
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多