【问题标题】:Cut JSON String just to its values RegEx [duplicate]将 JSON 字符串剪切为其值 RegEx [重复]
【发布时间】:2021-05-07 23:57:16
【问题描述】:

我正在尝试将 JSON 字符串剪切为 Flutter/Dart 中插入键之后的值。

例如我有这个 JSON 字符串:

  [{"insert":"Test12\n"},{"insert":"Test1","attributes":{"b":true}},{"insert":"\nTest"},{"insert":"\n","attributes":{"block":"quote"}},{"insert":"Test","attributes":{"s":true}},{"insert":"\nTest"},{"insert":"\n","attributes":{"block":"ol"}},{"insert":"Test"},{"insert":"\n","attributes":{"block":"ol"}},{"insert":"Test"},{"insert":"\n","attributes":{"block":"ul"}},{"insert":{"_type":"hr","_inline":false}},{"insert":"\n"},{"insert":"Test","attributes":{"i":true,"u":true,"s":true,"b":true}},{"insert":"\n\n"}]

我想在插入后将此字符串转换为它的值。所以结果是:

Test12 Test1 测试测试测试测试测试测试测试

例如,我不需要这些字符 "" , 。 {} \n

Test 代表不同的字符串。

我玩过一些正则表达式,但我无法让它工作。我在使用 RegEx 的道路上是否正确?

提前致谢。

【问题讨论】:

  • 我不明白你的问题。您想获取具有“插入”键的值吗?还是所有的值?
  • 哦,对不起,是的,我的意思是插入键之后的值。我会修改我的问题。
  • 只有你写的那些“测试”字符串吗?那么“插入”:“\n”,“插入”:“\n\n”以及对象/地图:“插入”:{“_type”:“hr”,“_inline”:false}呢? /跨度>
  • 是的,我也想摆脱这些。我只需要一个带有 8x 测试的裸字符串。所以只有插入后“”中的值。

标签: json regex flutter


【解决方案1】:

它是json,所以你不妨解码它:

var jsonString =  '[{"insert":"Test12\n"},{"insert":"Test1","attributes":{"b":true}},{"insert":"\nTest"},{"insert":"\n","attributes":{"block":"quote"}},{"insert":"Test","attributes":{"s":true}},{"insert":"\nTest"},{"insert":"\n","attributes":{"block":"ol"}},{"insert":"Test"},{"insert":"\n","attributes":{"block":"ol"}},{"insert":"Test"},{"insert":"\n","attributes":{"block":"ul"}},{"insert":{"_type":"hr","_inline":false}},{"insert":"\n"},{"insert":"Test","attributes":{"i":true,"u":true,"s":true,"b":true}},{"insert":"\n\n"}]';
jsonString = jsonString.replaceAll('\n', '\\n');
// jsonDecode() will convert the json to objects of primitive types.
var result = jsonDecode(jsonString) as List<dynamic>;
var inserts = [ for(var map in result) map["insert"]];
for(var insert in inserts)
  print(insert);

【讨论】:

  • 还不错,但不是 100% 正确。例如,它也会打印:{_type: hr, _inline: false}。现在有很多空字符串打印。我想到了一些 select BETWEEN {"insert":" MYTEXT "。我可以在第二步中摆脱那些 \n。
  • 如果您不想要 \n ,请将 '\\n' 替换为 ''。要仅获取绑定到“插入”键的字符串,请将 if(map["insert"] is String) 粘贴到 map["insert"] 之前。
猜你喜欢
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多