2

我正在开发一个从 XML 文件解析数据的 Dart 程序。不幸的是,这个文件有点乱,所以我在上面做了很多正则表达式来让它变得体面。由于 Dart 和 Javascript 一样,没有后向功能,我一直在尝试使用捕获括号以及模仿后向的方法,但无济于事。Dart 根本不喜欢它的语法,只是告诉我这function不是为myClass

我的 XML 文件由以下格式的字符串组成:

<items>Chicken Sauces/ Creamy Curried Chicken Salad w/ Wild Rice</items>

完成后,我希望该字符串看起来像:

<items>Chicken Sauces| Creamy Curried Chicken Salad w/ Wild Rice</items>

我试过在字符串上调用它:.replaceAll(new RegExp(r'(\w\s*)/(?=\s*\w)'),"$0|$1") 但这给了我错误,说“需要一个标识符” for $0and $1。如果有人可以为我提供一些关于如何正确使用捕获括号的指示,或者一种在 Dart 中模仿后视的方法,以及当前的前瞻,我将非常感激!

4

1 回答 1

3

假设您的正则表达式是正确的,您应该使用String.replaceAllMapped.replaceAllMapped(new RegExp(r'(\w\s*)/(?=\s*\w)'), (match) => "${match[0]}|${match[1]}")

您可能还对String.splitMapJoin感兴趣

不过,Compeek 已经指出,regexp 可能不会做你想做的事。

于 2013-06-15T10:05:55.917 回答