dart如何匹配然后替换正则表达式

Ots*_*lal 16 dart

这可能是一个愚蠢的问题,但我不能找到如何使用正则表达式被匹配后替换文本任何参考dartRegExp.

所以基本上我要做的就是这样:我有这样的文字

'{name : aName, hobby : [fishing, playing_guitar]}'
Run Code Online (Sandbox Code Playgroud)

我想使用此模式匹配字符串\b\w+\b然后使用此替换"$&",然后我希望输出是这样的:

'{"name" : "aName", "hobby" : ["fishing", "playing_guitar"]}'
Run Code Online (Sandbox Code Playgroud)

所以后来我可以用dart:jsonparse把那一个Map.

也许我想念一些东西,小心翼翼地给我一些指针?

Ale*_*uin 19

您必须使用String.replaceAllMapped.

final string = '{name : aName, hobby : [fishing, playing_guitar]}';
final newString = string.replaceAllMapped(RegExp(r'\b\w+\b'), (match) {
  return '"${match.group(0)}"';
});
print(newString);
Run Code Online (Sandbox Code Playgroud)

这个食谱由Dart Cookbook赞助.

  • 谢谢!很有魅力,再次感谢您指出那本食谱,不知道有没有。 (2认同)
  • regex 与 json 字符串中的 url 不正确。例如: '{name: aName, website: https://awebsite.com}' 它返回类似 '{"name": "aName", "website": "https": "//awebsite.com"} ' (2认同)