是否可以在 VTL 解析器中执行基于正则表达式的字符串替换?
Is it possible to perform regex based string replacement inside a VTL resolver?
我想定义一个响应映射模板如下:
#set( $postIds = [] )
#foreach( $item in $ctx.result.items )
#if( !$util.isNull($item))
$util.qr($postIds.add($item.SK.replace("^([0-9]){1,}-", "")))
#end
#end
{
"items": $utils.toJson($postIds),
#if( ${context.result.nextToken} )
"nextToken": "${context.result.nextToken}",
#end
}
目标是删除每个项目的 SK 属性 开头的时间戳和后跟“-”字符。
我检查过正则表达式是正确的,但这似乎不起作用,因为开头的数字没有被删除。
也尝试过 ...replace(/^([0-9]){1,}-/", "")
。
如果我没记错的话,文档某处说所有 Java 字符串方法都可用。
我在这里做错了什么?
要替换 regex 使用 replaceAll
Replaces each substring of this string that matches the given regular expression with the given replacement.
或replaceFirst
确保 SK
是字符串或使用 toString()
我想定义一个响应映射模板如下:
#set( $postIds = [] )
#foreach( $item in $ctx.result.items )
#if( !$util.isNull($item))
$util.qr($postIds.add($item.SK.replace("^([0-9]){1,}-", "")))
#end
#end
{
"items": $utils.toJson($postIds),
#if( ${context.result.nextToken} )
"nextToken": "${context.result.nextToken}",
#end
}
目标是删除每个项目的 SK 属性 开头的时间戳和后跟“-”字符。
我检查过正则表达式是正确的,但这似乎不起作用,因为开头的数字没有被删除。
也尝试过 ...replace(/^([0-9]){1,}-/", "")
。
如果我没记错的话,文档某处说所有 Java 字符串方法都可用。
我在这里做错了什么?
要替换 regex 使用 replaceAll
Replaces each substring of this string that matches the given regular expression with the given replacement.
或replaceFirst
确保 SK
是字符串或使用 toString()